Intereting Posts
Пустые файлы, загруженные в Android. Исходный браузер. Выбирать предложения AutoCompleteTextView из службы в отдельном потоке Android: Как правильно использовать библиотеку Gottox / socket.io-java-client? Android: перерисовка определенного вида внутри макета Android сравнивает два звука для фонетического соответствия Пример настраиваемого элемента spinnerDropDownViewResource FFMPEG 1.0 ANDROID NDK R8B Как я могу предотвратить перекрытие моего TextView? Автоматизация закрытия приложений на Android Как выполнять задачу Async повторно через определенные промежутки времени Как передать дополнительные значения намерений в действие ACTION_OPEN_DOCUMENT_TREE Чисто функциональное программирование на Android Найти друзей пользователя Facebook, которые также используют мое приложение для Android? Google InAppBilling onPurchaseStateChange никогда не вызывается Кинжал с Android: как использовать контекст при использовании MVP?

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

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

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

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

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

Введите описание изображения здесь

Используя 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'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 

Введите описание изображения здесь

Я получил некоторое время, чтобы написать код для переменной «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); 

Сначала получите точку центра карты с помощью

 googleMap.getCameraPosition().target; 

Затем вычислите ширину карты и получите высоту / 2 и преобразуйте их в Point используя значения x y вы только что получили.

Затем связать эту точку с картой

 LatLng widthPoint = map.getProjection().fromScreenLocation(point); 

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

Заметка

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