Миллионы Google Map Marker с использованием MarkerClusterer, JSON / AJAX - PullRequest
1 голос
/ 28 февраля 2012

Я занимаюсь разработкой большого гео-сайта. На карте Google есть более 2,5 миллионов мест с маркерами и информационным окном (при нажатии на маркер).

Я использую MarkerClusterer, чтобы сузить загрузку отдельного маркера.

Но, боюсь, если столько данных в браузере (JSON и т. Д.) Действительно убьет страницу.

Любые предложения по загрузке JSON по требованию путем определения границ карты при изменении панорамирования.

Любые рекомендации для ресурса также приветствуются.

Ответы [ 4 ]

0 голосов
/ 30 декабря 2013

Я использую кластер маркеров плюс библиотека с ограничением размера маркера 200 и уровнем масштабирования по умолчанию 8. При изменении или перетаскивании масштаба на карте появятся еще 200 маркеров.

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

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

Вы можете искать Quadkey. Quadkey идеально подходит для уменьшения сложности измерений и построения кластеров интересующей точки. Существует много различных методов, таких как кривая z, кривая Гильберта, кривая Пеано. Чтобы еще больше ограничить ограничения, вы можете прикрепить кластер к ограничительной рамке и уровню масштабирования карт Google.

0 голосов
/ 05 декабря 2012

Существует версия маркера Clusterer, которая работает для v3 из API карт Google, но это не проблема здесь.Проблема в том, что вы по-прежнему будете обрабатывать базовые данные в браузере с помощью JS (2,5 миллиона мест, полученных через JSON / AJAX).Скорее всего, это слишком много, если только вы не используете быстрое соединение с самыми быстрыми компьютерами с большим количеством оперативной памяти.

Для тех, кто рассматривает эту проблему на своих сайтах, имейте в виду, что все больше и больше мобильных устройствдоступ к этим сайтам, и javascript на таких устройствах просто не может обрабатывать почти столько же точек.Мой собственный сайт порвал с последней версией iOS6, и теперь я должен приспособиться, изменив мою js на более простую загрузку системы.

Но чтобы вернуться к ответу, то, что вам нужно сделатьэто делать новый вызов ajax всякий раз, когда границы карты меняются, и если масштабирование выходит слишком далеко, вам придется ограничить полученное число и внедрить некоторую систему, чтобы показать пользователю, что отображаются не все результаты.Мой сайт использует лимит 250, если я правильно помню, и показывает ограничивающий прямоугольник вокруг местоположений (вместе с markerclusterer для их кластеризации).Прежде чем заполняться реальными данными, я сделал тестовую базу данных тысяч и тысяч, и это число, казалось, было лучшим компромиссом между производительностью и информацией.(Но это было до того, как я стал мобильным и до v3 API).Версия 3 должна быть более упорядоченной, но мобильные устройства ограничены, так что вам придется тестировать.

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

Взгляните на Кластер Я думаю, что он может делать то, что вы хотите:

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