Google Maps v2 que centra y que da vuelta a la posición de la cámara para caber dos marcadores
Estoy luchando cómo hacer un movimiento con la cámara para encajar mis dos marcadores y mantenerlos en el mismo nivel. Así que esto implica modificar el zoom para adaptarlos y girar la cámara para que se ajuste a los marcadores en la misma línea.
Las siguientes dos fotos aclararán mi pregunta:
- Marcador personalizado en google maps en android con vector icono de activo
- Android google maps marker desactivar la opción de navegación
- Android Google Map addMarker () muy lento al agregar 400 marcadores
- Detectar si el usuario "anula la selección" del marcador en el mapa de google
- Google android maps api v2 Mostrar el título del marcador Siempre
Así que, lo que he hecho hasta ahora es esto:
public void centerIncidentRouteOnMap(List<LatLng> copiedPoints) { double minLat = Integer.MAX_VALUE; double maxLat = Integer.MIN_VALUE; double minLon = Integer.MAX_VALUE; double maxLon = Integer.MIN_VALUE; for (LatLng point : copiedPoints) { maxLat = Math.max(point.latitude, maxLat); minLat = Math.min(point.latitude, minLat); maxLon = Math.max(point.longitude, maxLon); minLon = Math.min(point.longitude, minLon); } final LatLngBounds bounds = new LatLngBounds.Builder().include(new LatLng(maxLat, maxLon)).include(new LatLng(minLat, minLon)).build(); mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 120)); }
Pero esto sólo hace que los dos marcadores caben en la pantalla, así que necesito saber cómo girar la cámara con el ángulo correcto para obtener la última foto.
¿Puede alguien ayudarme con esto?
¡Gracias!
- Cómo dibujar el marcador en el centro de la polilínea
- Hacer que el marcador se pueda arrastrar tras un solo clic en Android
- Refreshing makers (ClusterItems) en Google Maps v2 para Android
- Cómo actualizar los marcadores en el mapa en android?
- Marcadores de mapa con texto en Google Maps Android API v2
- Android: ¿Cómo configurar imageView como un marcador en google map API android?
- La ventana de información de Mapas v2 no se muestra cuando se toca el marcador, pero sí después de tocar la Ventana de información invisible
- Marcador v2 de la API de Google Maps de Google Maps con saltos de anclaje personalizados definidos cuando se arrastra
En – casi – pseudo-código, pruebe algo parecido:
CameraPosition cameraPosition = new CameraPosition.Builder() .target(Your_target) // Sets the center of the map .zoom(YourZoom) // Sets the zoom .bearing(Your_Angle) // -90 = west, 90 = east .tilt(Some_Tilt) map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
Para recuperar el ángulo:
float xDiff = x2 - x1; float yDiff = y2 - y1; return Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI;
No estoy seguro de cuánto estoy correcto pero estoy compartiendo mi idea.
-
Encuentre el punto medio (latitud longitud) de dos marcadores
private LatLng midPoint(double lat1, double long1, double lat2,double long2) { return new LatLng((lat1+lat2)/2, (long1+long2)/2); }
-
Calcule el ángulo entre el punto medio y cualquier otra posición del marcador.
private double angleBteweenCoordinate(double lat1, double long1, double lat2, double long2) { double dLon = (long2 - long1); double y = Math.sin(dLon) * Math.cos(lat2); double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon); double brng = Math.atan2(y, x); brng = Math.toDegrees(brng); brng = (brng + 360) % 360; brng = 360 - brng; return brng; }
-
Gire el mapa hasta ese ángulo.
CameraPosition cameraPosition = new CameraPosition.Builder (). Target (mid2 (lng1, lng1, lat2, lng2)). Zoom (14) .bearing (angleBteweenCoordinate (lat1, lng1, lat2, lng2)).
mMap.animateCamera (CameraUpdateFactory.newCameraPosition (cameraPosition));
También puede encontrar el cojinete de dos puntos usando Location.distanceBetween . Este método devuelve el cojinete inicial y final. Puedes encontrar cuál es la diferencia entre ellos aquí
- ProgressDialog está obsoleto. ¿Cuál es el alternativo a utilizar?
- Android: programación de diseños de XML