Размещение маркеров для 6000+ местоположений с помощью Google Maps (или другой веб-платформы и мобильной платформы) - PullRequest
1 голос
/ 21 ноября 2011

Ближайший пример того, что я пытаюсь сделать, - это поиск магазина. У меня есть более 6000 мест, которые нужно нанести на карту Канады.

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

Как можно размещать маркеры только в тех местах, где они видны? Нужно ли отправлять геоданные всех 6000 местоположений клиенту каждый раз, когда они загружают карту?

Это выполнимо с картами? (Я уверен, что так и должно быть) Или есть лучший сервис для такого рода вещей?

Ответы [ 2 ]

3 голосов
/ 21 ноября 2011

Определенно не рисуйте все места одновременно, если они не все видны.Попробуйте использовать MarkerManager ( статью здесь ) или MarkerLight (код: http://gmaps -samples.googlecode.com / svn / trunk / manymarkers / , демо-версия: http://gmaps -samples.googlecode.com / SVN / багажник / manymarkers / randommarkers.html ).Если ваша исходная карта и данные таковы, что изначально все маркеры были бы видны, это определенно правильный путь.

Вы также можете использовать объект GEvent ( docs ) дляопределите событие «перемещение», затем проверьте текущие координаты экрана и нарисуйте любые границы.Это лучший маршрут, если ваша исходная карта слишком велика или мала, и / или ваш набор маркеров слишком велик, чтобы поместиться на начальном виде карты.Ваш пользователь будет перемещать карту, чтобы вы могли реагировать на это движение и рисовать только соответствующие маркеры.Посмотрите на http://econym.org.uk/gmap/gevent.htm список других событий GEvent (не удалось найти официальный список в API), вы также можете посмотреть события «увеличения».

Два методатакже можно комбинировать.

2 голосов
/ 21 ноября 2011

Вы можете использовать getBounds(), чтобы определить видимую часть карты. Я бы использовал эти данные для запроса с сервера всех мест в этих пределах. Используйте событие bounds_changed, чтобы отслеживать изменения в окне просмотра и запрашивать дополнительные местоположения при необходимости. Возможно, вы захотите установить либо минимальный уровень масштабирования, либо максимальное количество результатов, чтобы избежать отображения слишком большого количества местоположений, чем разумно. Например, когда карта масштабируется, чтобы отобразить всю Канаду в одном виде.

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