Подтвердить что ты не робот

Получить расстояние от видимой части карты Google

Я хочу нарисовать статический круг над картой с Google Maps. Когда пользователь зажимает, карта будет увеличивать/уменьшать масштаб.

Мне нужно знать радиус карты (относящийся к области, содержащейся в круге), и соответственно изменить строку поиска внизу.

Кто-нибудь знает, как получить расстояние от левого края до края экрана? Я не нашел ничего в Google Maps API doc.

Что-то вроде этого:

enter image description here

4b9b3361

Ответ 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);

теперь, когда у вас есть точка тэгрета и точка ширины, вы можете рассчитать расстояние между двумя точками, которое даст вам радиус.

Примечание

это предполагает всегда в портретном режиме, если вы находитесь в ландшафтном режиме, круг будет больше, чем видимая область, поэтому в этом случае вам нужно будет получить расстояние от высоты