2011-07-08 12 views
0

このメソッドからメソッド "run()"の値 "pt"にアクセスする必要があります。私はどのようにそれをすることができますか?方法は次のとおりです。メソッド "run()"の "GeoPoint"へのアクセス

public void minimaDistancia(final ItemizedOverlay itemized) 
    { 
     final MyLocationOverlay myloc = new MyLocationOverlay(this,mapa); 
     myloc.enableMyLocation(); //Activamos actualización de la posición 
     myloc.enableCompass(); //Activamos la brújula 
     myloc.runOnFirstFix(new Runnable() { 
      public void run() { 
       GeoPoint pt = myloc.getMyLocation(); 
      } 
     }); 
    ... 
    } 

ありがとうございます。


私はこの方法では「min_dist」にアクセスする必要があります。

public void processLocation(GeoPoint punto,ItemizedOverlay itemized) 
    { 
     double min_dist = 1000; 
     double dist_aux; 
     int i; 

     Location puntoA = new Location("Punto 1"); 
     puntoA.setLatitude(punto.getLatitudeE6()); 
     puntoA.setLongitude(punto.getLongitudeE6()); 
     for(i=0;i<12;i++) 
     { 
      Location puntoB = new Location("Punto 2"); 
      puntoB.setLatitude(itemized.getItem(i).getPoint().getLatitudeE6()/1E6); 
      puntoB.setLongitude(itemized.getItem(i).getPoint().getLongitudeE6()/1E6); 
      dist_aux = puntoA.distanceTo(puntoB)/1000; 
      dist_aux = (double)Math.round(dist_aux*100)/100; 
      if(dist_aux < min_dist) 
       min_dist = dist_aux; 
     } 
     minimun_distance = min_dist; 
    } 

私は私の場所と最寄りの病院間のminimunの距離は(救急アプリケーションである)を取得したいです。 私はこのようなグローバル変数を宣言しようとしました:public static double minimun_distance、しかし値を変更したいときは、単にそれをしません。割り当て内のminumun_distanceの値は変更されません。 このメソッドでトーストを表示しようとすると、アプリケーションがRunTimeError(Eclipseデバッガで表示される)をクラッシュさせるということを忘れてしまいました。

お返事ありがとうございます。

public void minimaDistancia(final ItemizedOverlay itemized) 
    { 
     final MyLocationOverlay myloc = new MyLocationOverlay(this,mapa); 
     myloc.enableMyLocation(); //Activamos actualización de la posición 
     myloc.enableCompass(); //Activamos la brújula 
     myloc.runOnFirstFix(new Runnable() { 
      public void run() { 
       processLocation(myloc.getMyLocation()); 
      } 
     }); 
    } 

public void processLocation(GeoPoint pt) 
{ 
... 
} 

EDIT:代わりにこれを試して

答えて

0

あなたが実際の処理を行い、インスタンスメソッドを作成する必要があります。私は、場所が何らかの理由で設定されていないと推測しています。

myloc.runOnFirstFix(new Runnable() { 
       public void run() { 
        android.location.Location lf = myloc.getLastFix(); 
        processLocation(new GeoPoint((int)(lf.getLatitude()*1E6), (int)(lf.getLongitude()*1E6))); 
       } 
      }); 
+0

私はそれを試みました...しかしそれは動作しません。私がprocessLocationメソッドを呼び出すと、RuntimeExceptionが発生します。何か案が? – Luis

+0

質問に例外を含めると、間違っていることがわかります。 – Femi

+0

私はRunTimeExceptionの問題を解決します。問題はこれです:トーストに表示するために、 "processLocation"によって返されたdouble値にアクセスする必要があります。どうしたらいいですか? run()メソッドは戻り値を許可しないためです。 – Luis

0

あなたが何を求めているのかわかりません。トーストルーチンはどこに置いていますか? アクティビティクラスレベルでグローバル変数を使用できますか?

編集 - 申し訳ありません。最後にこれを入れておいてください...

関連する問題