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

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

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

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

Спасибо

Ответы

Ответ 1

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

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

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

Ответ 2

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

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

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