@cester

Как реализовать загрузку большого количества маркеров на карту, react/svg?

Добрый день! Подскажите пожалуйста как лучше реализовывать загрузку маркеров на карту если их около 5-ти тысяч и может быть больше.
Проект на react, карта на svg.
Маркеры надо показать постепенно, группами.
На данный момент в компоненте я беру массив из этих элементов и через сетинтервал записываю в стейт определенное количество элементов.
И уже со стейта вывожу данные.
Но что-то мне это не нравится)

Буду благодарен за лучший вариант/идею рендера этих маркеров)
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 3
ImLoaD
@ImLoaD
Программист
Вам точно надо именно визуализировать 5 тысяч маркеров, или можно прибегнуть к кластеризации?
Ответ написан
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Рисуйте только те маркеры, которые находятся в области видимости карты. Еще лучше - загружать с сервера только те маркеры, которые находятся в области видимости карты. т.е. при получении маркеров, передаете на сервер свою область (позицию и размер), на сервере составляете список маркеров в этой области и возвращаете клиенту. т.к. не очень хорошо хранить 5 тысяч объектов на клиенте, а уж отображать тем более.
UPD: если хотите отобразить все, можно произвести некоторую оптимизацию.
1) Не засовывать массив точек в state. Создайте отдельный массив точек markers, а в state добавьте переменную iteration. И после того, как вы что-то меняете в объектах markers, меняйте в state переменную iteration, и тогда рендеринг будет произведен.
2) Хранить все маркеры в одном path, а не в множестве элементов.

Вот пример https://jsfiddle.net/7z9grsxe/6/ У меня спокойно держит 10000 объектов.
Ответ написан
@anjiJa
В mapbox есть функция, которая проверяет месторасположение маркера внутри определенного контура. Если ответ true, то можно смело выводить на экран.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы