2014-02-15 3 views
5

Я делаю некоторые тесты с помощью HTML-карты в сочетании с Leaflet. На стороне сервера У меня есть приложение Ruby Sinatra, в котором отображаются json-маркеры, полученные таблицей MySQL. Каковы наилучшие методы работы с 2k-5k и потенциально больше маркеров?Рекомендации по обработке тысяч маркеров с листом

  • Загрузите все маркеры в первую очередь, а затем делегируйте все до Leaflet.markercluster.
  • Загрузите маркеры каждый раз, когда изменяется окно просмотра карты, отправив southWest & northEast указывает на сервер, уточните сторону отсечения сервера и затем синхронизируйте клиентскую сторону буфера маркера с записями на сервере (что я делаю прямо сейчас) ,
  • Смесь из двух вышеуказанных подходов.

Спасибо, Luca

ответ

5

Несколько месяцев прошло с тех пор, как я изначально разместил вопрос, и я прошел его!

Как @Brett DeWoody правильно отметил Правый подход должен быть строго связан с числом элементов DOM на экране (я имею в виду главным образом маркеры). Чем веселее, если устройство работает быстрее (особенно процессор). Поскольку приложение, которое я разрабатывал, имеет как настольные компьютеры, так и планшетные компьютеры в качестве целевых устройств, ЦП был важным фактором, подобным плотности маркеров разных географических зон.

Я решил отделить запрос/выборку DBase и отображение/отображение карты. В основном пользователь настраивает элементы управления/входы для фильтрации всего набора данных, после чего извлекаются записи и Leaflet.markercluster выполняет работу по представлению. Когда фильтр изменяется, цикл начинается. Пользователь может выбрать уровень масштабирования карты кластеризации в зависимости от мощности процессора.

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

Надеюсь, это может быть полезно.

Приветствия, Luca

+0

О, мой! Ты спас мой день! Я новичок в этом плагине, но это действительно потрясающе, видя работу: D –

1

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

+1

Я думаю, что есть также элемент UX на этот вопрос. Являются ли маркеры случайными или кластеризованными, и какой уровень масштабирования будет предпочтительнее пользователя? Они также могут повлиять на окончательный выбор. –

Смежные вопросы