从“run()”方法中访问“Ge​​oPoint”

时间:2011-07-08 13:39:33

标签: android

我需要从这个方法中访问方法“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中看到它)。

感谢您的回答。

2 个答案:

答案 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)

不确定你在问什么。你在哪里举杯祝酒? 也许你可以在活动类级别使用全局变量?

编辑 - 抱歉。应该把它放在最后......