Google Maps API v3, множество маркеров, кластеризация и производительность - PullRequest
15 голосов
/ 27 февраля 2011

У меня есть около 5000 маркеров, которые необходимо отобразить на карте Google. В настоящее время я использую API (v3), и на медленных компьютерах возникают проблемы с производительностью, особенно в IE. Я уже сделал следующее, чтобы ускорить процесс:

  1. Использовал простой класс маркера, который расширяет OverlayView и отображает один элемент DIV на маркер
  2. Реализована библиотека MarkerClusterer для кластеризации маркеров на разных уровнях
  3. Рендеринг GIF для IE вместо альфа PNG

Существуют ли более быстрые классы кластеризации? Любые другие советы? Я пытаюсь избежать кластеризации на стороне сервера, если только это не единственный вариант, позволяющий выжать производительность из системы.

Спасибо

Ответы [ 2 ]

6 голосов
/ 01 марта 2011

Я использовал метод, который загружает все маркеры на страницу, а затем прослушивает карту для завершения панорамирования.

Когда карта закончила панорамирование, я сначала проверяю уровень масштабирования - если он слишком высокий, я ничего не отображаю. Если он находится на приемлемом уровне, я перебираю сохраненные маркеры и проверяю, попадают ли они в ограничивающую рамку карты. Если они это сделают, они будут добавлены. Затем второй цикл удаляет все, что вышло из вида.

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

0 голосов
/ 03 июля 2012

Решение, упомянутое выше, работает для гораздо большего количества маркеров.Мы используем его для миллионов точек GPS на сервере (включая полигоны и т. Д.).Единственная проблема заключается в некоторой логике, такой как правильное кэширование пространственных запросов или выборка только новых результатов, если пользователь перемещает карту на расстояние более X метров.Есть много работы, чтобы сделать это, но для просмотра большого количества очков нет ничего лучше.

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

Вы можете проверить его на http://www.tixik.com/london-2354567.htm в прямом эфире (просто нажмите ,, запланируйте поездку "и начните планирование. Просто попробуйте переместить карту, увеличить или уменьшить масштаб, и все точки будут отображаться / скрываться при увеличении / перетягивании карты.

...