#android #google-maps
#Android #google-карты
Вопрос:
Я использую Google map в Android, где я заполняю разные маркеры на карте.В то же время мне сложно реализовать уровень масштабирования, который охватывает все маркеры на карте.
Кто-нибудь может подсказать мне правильный способ реализации zoomToSpan в Android.
Ответ №1:
Вам необходимо отслеживать положения всех маркеров, чтобы определить правильные границы:
- Инициализируйте 4 целых числа: верхнюю и правую границы целым числом.MIN_VALUE, нижняя и левая границы с целым числом.МАКСИМАЛЬНОЕ значение.
- Повторите положение всех ваших маркеров и соответствующим образом обновите границы: слева должна быть наименьшая широта, справа — наибольшая широта, внизу — наименьшая долгота, вверху — наибольшая широта (все это с использованием значения latitude E6).
- Передайте zoomToSpan разницу между правым и левым, а также разницу между верхним и нижним, и у вас все должно получиться.
Возможно, вам потребуется выполнить некоторую дополнительную работу, чтобы правильно настроить центрирование карты, чтобы все было в поле зрения, но этого должно быть достаточно.
Комментарии:
1. Я пробовал это, в некоторых случаях это работает, в то время как в некоторых случаях это дает мне неверный вывод.
2. Возможно, в реализации масштабирования карты есть ошибка, но более вероятно, что ошибка в вашем коде: у меня это работает очень надежно. Когда вы говорите «неправильный вывод», что вы имеете в виду: он вообще не масштабируется или не масштабируется, чтобы покрыть все маркеры? Вы абсолютно уверены, что вызываете zoomToSpan из основного потока цикла и что все маркеры используются при проверке границ выше (вы не добавляете новые маркеры в какой-либо другой поток после вызова zoomToSpan)?
3. Вам нужно будет показать некоторый код: у меня это работает и находится в производстве более 6 месяцев.
4. есть ли какой-либо способ реализовать zoomToSpan в пользовательских картах, т. Е. не на карте Google?