Google Maps API v3, множество маркеров, кластеризация и производительность

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

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

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

Спасибо


person JamieNewman    schedule 27.02.2011    source источник
comment
Я полагаю, вы прочитали code.google.com/apis/maps/articles/toomanymarkers .html особенно FusionTablesLayer   -  person macarthy    schedule 27.02.2011
comment
Я использую библиотеку MarkerClusterer с этой страницы. Производительность IE6 по-прежнему ужасна при рендеринге многих вещей на карте (даже при кластеризации), и я действительно ищу способы улучшить этот конкретный браузер.   -  person JamieNewman    schedule 28.02.2011
comment
Я знаю, что это старо, но сколько у вас пользователей, использующих IE6?   -  person Tony    schedule 09.05.2011
comment
svennerberg.com/2009/01 // сравнивает разные библиотеки и их производительность (что-то вроде эталона)   -  person manikanta    schedule 17.11.2011
comment
Проверьте MarkerClustererPlus.   -  person jjwdesign    schedule 25.11.2013


Ответы (2)


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

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

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

person Valerion    schedule 01.03.2011

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

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

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

person rozsypal    schedule 03.07.2012
comment
ответы не имеют фиксированного порядка, комментарий кажется более подходящей формой для вашего текста - person johannes; 11.10.2012
comment
слишком длинный на 171 символ - person iambriansreed; 02.08.2013