Punto central de mapas incorrecto

Mi aplicación tiene una actividad de título y varias actividades para niños, incluida una que es predominantemente una pantalla de Google Maps.

Recientemente agregué una opción para que el usuario de la aplicación elija centrar el mapa en la ubicación de los usuarios (usando el GPS de los dispositivos droides o similar).

El problema es que una vez que se ha elegido y luego no se ha elegido, todavía se centra en la ubicación correcta y luego cambia a su ubicación física en un par de segundos.

¿Alguna idea de cómo puedo evitar que esto suceda?

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60L, (float) 100.0, onLocationChange);
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60L, (float) 100.0, onLocationChange);
    provider = locationManager.getBestProvider(criteria, false);
    location = locationManager.getLastKnownLocation(provider);

    settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    location = locationManager.getLastKnownLocation(provider);
}

public void onStop() {
    super.onStop();
    locationManager.removeUpdates(onLocationChange);
    if (timer != null) {
        timer.cancel();
    }
}

@Override
public void onRestart() {
    super.onRestart();  
    settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    ...
    location = locationManager.getLastKnownLocation(provider);
}

preguntado el 10 de marzo de 12 a las 11:03

1 Respuestas

Parece que soy mi peor enemigo.

El problema es que estaba configurando la ubicación en

LocationListener onLocationChange=new LocationListener() {
    public void onLocationChanged(Location location) {
        setMapCentre(location.getLatitude(), location.getLongitude());
        map.getController().setZoom(13 + zoomModifier);

    }

La solución fue simplemente agregar algo de lógica para probar si el usuario desea centrar y hacer zoom en su ubicación.

LocationListener onLocationChange=new LocationListener() {
    public void onLocationChanged(Location location) {
        if (zoomtown.equals(" zoomme")) {
            setMapCentre(location.getLatitude(), location.getLongitude());
            map.getController().setZoom(13 + zoomModifier);
        }
    }

respondido 11 mar '12, 03:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.