Punto central de mapas incorrecto
Frecuentes
Visto 353 veces
0
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);
}
1 Respuestas
0
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 android google-maps or haz tu propia pregunta.