Проблема с реализацией zoomToSpan

#android #google-maps

#Android #google-карты

Вопрос:

Я использую Google map в Android, где я заполняю разные маркеры на карте.В то же время мне сложно реализовать уровень масштабирования, который охватывает все маркеры на карте.

Кто-нибудь может подсказать мне правильный способ реализации zoomToSpan в Android.

Ответ №1:

Вам необходимо отслеживать положения всех маркеров, чтобы определить правильные границы:

  1. Инициализируйте 4 целых числа: верхнюю и правую границы целым числом.MIN_VALUE, нижняя и левая границы с целым числом.МАКСИМАЛЬНОЕ значение.
  2. Повторите положение всех ваших маркеров и соответствующим образом обновите границы: слева должна быть наименьшая широта, справа — наибольшая широта, внизу — наименьшая долгота, вверху — наибольшая широта (все это с использованием значения latitude E6).
  3. Передайте zoomToSpan разницу между правым и левым, а также разницу между верхним и нижним, и у вас все должно получиться.

Возможно, вам потребуется выполнить некоторую дополнительную работу, чтобы правильно настроить центрирование карты, чтобы все было в поле зрения, но этого должно быть достаточно.

Комментарии:

1. Я пробовал это, в некоторых случаях это работает, в то время как в некоторых случаях это дает мне неверный вывод.

2. Возможно, в реализации масштабирования карты есть ошибка, но более вероятно, что ошибка в вашем коде: у меня это работает очень надежно. Когда вы говорите «неправильный вывод», что вы имеете в виду: он вообще не масштабируется или не масштабируется, чтобы покрыть все маркеры? Вы абсолютно уверены, что вызываете zoomToSpan из основного потока цикла и что все маркеры используются при проверке границ выше (вы не добавляете новые маркеры в какой-либо другой поток после вызова zoomToSpan)?

3. Вам нужно будет показать некоторый код: у меня это работает и находится в производстве более 6 месяцев.

4. есть ли какой-либо способ реализовать zoomToSpan в пользовательских картах, т. Е. не на карте Google?