Получить расстояние от видимой части карты Google
Я хочу нарисовать статический круг над картой с Google Maps
. Когда пользователь зажимает, карта будет увеличивать/уменьшать масштаб.
Мне нужно знать радиус карты (относящийся к области, содержащейся в круге), и соответственно изменить строку поиска внизу.
Кто-нибудь знает, как получить расстояние от левого края до края экрана? Я не нашел ничего в Google Maps API doc.
Что-то вроде этого:
![enter image description here]()
Ответы
Ответ 1
используя VisibleRegion, вы можете получить все угловые сердечники, а также центр.
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;
и вы можете вычислить расстояние от двух областей на этом
Location MiddleLeftCornerLocation;//(center 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
![enter image description here]()
Ответ 2
Мне нужно написать код для переменной MiddleLeftCornerLocation в отличном ответе @Md. Monsur Hossain Tonmoy, поэтому просто для его завершения (у меня недостаточно очков репутации, чтобы прокомментировать ваш ответ, извините):
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);
Ответ 3
Сначала получите точку центра карты с помощью
googleMap.getCameraPosition().target;
затем определите ширину карты и получите высоту /2 и преобразуйте их в Point
, используя значения x
y
, которые вы только что получили.
то связать эту точку с картой
LatLng widthPoint = map.getProjection().fromScreenLocation(point);
теперь, когда у вас есть точка тэгрета и точка ширины, вы можете рассчитать расстояние между двумя точками, которое даст вам радиус.
Примечание
это предполагает всегда в портретном режиме, если вы находитесь в ландшафтном режиме, круг будет больше, чем видимая область, поэтому в этом случае вам нужно будет получить расстояние от высоты