我需要从这个方法中访问方法“run()”的值“pt”。我怎么能这样做?这是方法:
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;
}
我想获得我的位置和最近的医院之间的最小距离(是急救申请)。 我试图声明一个像这样的全局变量:public static double minimun_distance,但是当我想改变它的值时,根本就不这样做。它不会更改赋值中的minumun_distance值。 我忘了说当我尝试在这个方法中显示Toast时,应用程序崩溃了一个RunTimeError(我在Eclipse Debugger中看到它)。
感谢您的回答。
答案 0 :(得分:0)
您应该创建一个执行实际处理的实例方法:
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)
{
...
}
编辑:试试这个。我猜这个位置由于某种原因没有设置。
myloc.runOnFirstFix(new Runnable() {
public void run() {
android.location.Location lf = myloc.getLastFix();
processLocation(new GeoPoint((int)(lf.getLatitude()*1E6), (int)(lf.getLongitude()*1E6)));
}
});
答案 1 :(得分:0)
不确定你在问什么。你在哪里举杯祝酒? 也许你可以在活动类级别使用全局变量?
编辑 - 抱歉。应该把它放在最后......