¿Cómo ajustar el nivel de zoom para ajustar el límite y, a continuación, el mapa del centro en marcador de desplazamiento?
Tengo un mapa de google (com.google.android.gms.maps.GoogleMap) donde tengo algunos marcadores fijados.
Puedo, por separado,
- cómo borrar todas las superposiciones de mapa o marcadores de google map en android?
- Cómo dibujar las direcciones de carreteras entre dos geocódigos en android google map v2?
- ¿Cómo cambiar el tipo de mapa de simple a satélite de PlacePicker de la API de Google Places?
- Pantalla en blanco de la API de Google Map API V2
- Como llegar "Bus Service No" usando google api
1) ajustar el nivel de zoom y centrar el mapa en un límite:
mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(getZoomBounds(), 10));
y
2) centrar el mapa sobre uno de los marcadores:
LatLng poiSelectedLatLng = new LatLng(markerSelected.getPosition().latitude + offset, markerSelected.getPosition().longitude); mMap.animateCamera(CameraUpdateFactory.newLatLng(poiSelectedLatLng));
Pero, para la vida de mí, no puedo hacer ambas cosas, ajustar el nivel de zoom usando newLatLngBounds y luego centrar el mapa en otro lugar. Todo lo que hago es lo que veo sucediendo en el mapa.
¿Cómo hago esto?
- Android maps: No se pudo encontrar el estilo 'mapViewStyle' en el tema actual
- Cómo hacer "uses-library" opcional en android
- No se puede resolver el método getMap ()
- Selección de la API de Google Places sólo determinados tipos de lugares
- Android Dibujar polilíneas con flecha en el mapa de google con la ruta de dirección
- MoveCamera y animateCamera no funcionan la segunda vez
- Acceso a google maps en el emulador android
- Google Maps Android API v2 sólo admite dispositivos con OpenGL ES 2.0 y superior
Pruebe a usar moveCamera
y animateCamera
…
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(getZoomBounds(), 10)); LatLng poiSelectedLatLng = new LatLng(markerSelected.getPosition().latitude + offset, markerSelected.getPosition().longitude); mMap.animateCamera(CameraUpdateFactory.newLatLng(poiSelectedLatLng));
moveCamera
se moverá directamente a ese lugar mientras animateCamera
proporcionará el efecto de movimiento. Son lineales en la naturaleza así que uno sucederá después del otro sin embargo acodarlos como he hecho arriba proporcionará el efecto potencial que usted está buscando.
Si está tratando de ver el movimiento real de ambas llamadas en la interfaz de usuario, tendrá que registrarse para la devolución de llamada y completar la animación según sea necesario.
Para los futuros visitantes esto es cómo puede encadenar animaciones de cámara:
map.animateCamera(CameraUpdateFactory.newLatLngBounds(getZoomBounds(), 10), 2000, new CancelableCallback() { @Override public void onFinish() { LatLng poiSelectedLatLng = new LatLng(markerSelected.getPosition().latitude + offset, markerSelected.getPosition().longitude); map.animateCamera(CameraUpdateFactory.newLatLng(poiSelectedLatLng)); } @Override public void onCancel() { } });
También vea AnimateCameraChainingExampleActivity.java para un ejemplo de cómo encadenar infinitamente.