android - studio - Recuperar la distancia desde la parte visible del mapa de Google
medir distancias google maps android (3)
Con VisibleRegion puede obtener todas las coordenadas de las esquinas y también el centro.
VisibleRegion vr = mMap.getProjection().getVisibleRegion();
double left = vr.latLngBounds.southwest.longitude;
double top = vr.latLngBounds.northeast.latitude;
double right = vr.latLngBounds.northeast.longitude;
double bottom = vr.latLngBounds.southwest.latitude;
y se puede calcular la distancia de dos regiones por este
Location MiddleLeftCornerLocation;//(center''s latitude,vr.latLngBounds.southwest.longitude)
Location center=new Location("center");
center.setLatitude( vr.latLngBounds.getCenter().latitude);
center.setLongitude( vr.latLngBounds.getCenter().longitude);
float dis = center.distanceTo(MiddleLeftCornerLocation);//calculate distane between middleLeftcorner and center
Quiero dibujar un círculo estático sobre un mapa con Google Maps
. Cuando el usuario pellizca, el mapa se acercará / alejará.
Necesito saber el radio del mapa (relacionado con el área contenida en el círculo) y cambiar la barra de búsqueda en la parte inferior en consecuencia.
¿Alguien sabe una solución de cómo recuperar la distancia desde el borde de la pantalla de izquierda a derecha? No encontré nada en el documento de la API de Google Maps .
Algo como esto:
Primero obtén el punto central del mapa con
googleMap.getCameraPosition().target;
luego calcule el ancho del mapa y obtenga la altura / 2 y conviértalos a un Point
usando los valores x
y
que acaba de obtener.
luego relaciona ese punto con el mapa
LatLng widthPoint = map.getProjection().fromScreenLocation(point);
Ahora que tiene el punto de tagret y el punto de ancho, puede calcular la distancia entre los 2 puntos que le dará el radio.
Nota
esto se supone siempre en modo retrato, si está en modo paisaje, el círculo será más grande que el área visible, por lo que en este caso querrá obtener la distancia desde la altura
Tengo un tiempo para escribir el código para la variable "MiddleLeftCornerLocation" en la gran respuesta dada por @Md. Monsur Hossain Tonmoy, así que solo para completarlo (no tengo suficientes puntos de reputación para comentar su respuesta, lo siento):
VisibleRegion vr = map.getProjection().getVisibleRegion();
double bottom = vr.latLngBounds.southwest.latitude;
Location center = new Location("center");
center.setLatitude(vr.latLngBounds.getCenter().latitude);
center.setLongitude(vr.latLngBounds.getCenter().longitude);
Location middleLeftCornerLocation = new Location("center");
middleLeftCornerLocation.setLatitude(center.getLatitude());
middleLeftCornerLocation.setLongitude(left);
float dis = center.distanceTo(middleLeftCornerLocation);