Добавление маркеров в Google Maps только при необходимости - PullRequest
0 голосов
/ 14 февраля 2012

Я могу отобразить карту Google Maps на веб-сайте, загрузить сотни маркеров для текущей области карты и отобразить их. Проблема в том, как вести себя, когда карту увеличивают / уменьшают или перемещают, поэтому область карты изменяется.

Есть часть карты, которая такая же, как и раньше, и маркеры на ней. Но есть часть карты, которая является новой, и следует добавить новые маркеры.

Сейчас я делаю самое простое решение, очищаю все маркеры, извлекаю маркеры для текущей области карты и добавляю их. Это производит мерцающий эффект на маркеры (очевидно) из-за очистки и добавления сразу после.

Какой эффективный способ справиться с этой ситуацией?

Есть ли способ проверить, был ли уже добавлен маркер на карту?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2012

Чтобы проверить, был ли маркер добавлен на карту, вызовите метод getMap для маркера и, если он возвращает объект карты, он был добавлен.

Чтобы проверить, находится ли маркер в видимой области карты, вы можете вызвать метод getBounds на карте, который возвращает LatLngBounds.Затем вызовите метод contains возвращенного LatLngBounds, передавая координаты маркера.

Надеюсь, это поможет

0 голосов
/ 14 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...