1

30 秒経過したときに locationoverlay.runonfirstfix を停止するにはどうすればよいですか?

私はハンドラーで考えていますが、これをどのように実装できますか?

miPunto.runOnFirstFix(new Runnable()
               {
                  @Override
                  public void run()
                     {
                        if (miPunto.getMyLocation() != null)
                           {

                              latitud = miPunto.getMyLocation().getLatitudeE6();
                              longitud = miPunto.getMyLocation().getLongitudeE6();
                              gmiPunto = new GeoPoint((int) (latitud), (int) (longitud));
                              controladorMapa.animateTo(gmiPunto);
                              controladorMapa.setZoom(17);
                              controladorMapa.setCenter(gmiPunto);

                              dialogo.dismiss();
                           }
                     }

               });
4

1 に答える 1

0

これを具体的に止める方法はありません。runOnFirstFix() の代わりに LocationOverlay の onLocationChanged を使用できます。

public void onResume() {
    super.onResume();
    if (locationOverlay == null) {
        locationOverlay = new JulietLocationOverlay(mapView);
    }
    mapView.getOverlays().add(locationOverlay);
    locationOverlay.enableMyLocation();
}

public void onPause() {
    super.onPause();
    if (locationOverlay != null) {
        if (mapView != null) {
            mapView.getOverlays().remove(locationOverlay);
        }
        locationOverlay.disableMyLocation();
    }
}

 protected class JulietLocationOverlay extends MyLocationOverlay {

    public boolean locationFound = false;

    public synchronized void onLocationChanged(Location location) {
        super.onLocationChanged(location);
        if (!locationFound) {
            // As good as first fix.
            // Do every thing you need
        }
    }

    public JulietLocationOverlay(MapView mapView) {
        super(Activity.this, mapView);
    }

}
于 2013-05-09T22:27:12.287 に答える