Intereting Posts
При кодировании для Android существует ли способ получить использование ЦП для каждого ядра устройства отдельно? Android скриншот активности с панелью действий Как сделать синхронизацию или сообщение Async HTTP / Get Java.lang.NoClassDefFoundError: android.security.MessageDigest Как вернуться на предыдущую страницу, если в WebView нажата кнопка «Назад»? Приложение не отвечает – AOSP Меню Android: две однонаправленные группы в одном меню Android Studio: как изменить стиль и поведение курсора по умолчанию? Совместное изображение, но не расширение файла Используйте Android GPS для обнаружения и подключения к другим телефонам Сделайте fullScreen только в макете-андроиде при игре videoView Настройте ActionBar на Android с помощью ActionbarSherlock и jeremyfeinstein slidemenu Как ссылаться на один контроль от другого во время инфляции? Android.support.v7.internal.widget.ActionBarOverlayLayout не может быть создан Ионные запросы возвращают 404 только на Android, в Chrome он отлично работает

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

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

Заметка

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