Нужно отображать на карте большое количество объектов (несколько десятков тысяч), которые загружаются с серверного api. Как правильно это реализовать, чтобы объекты подгружались по мере движения карты (чтобы не загружать всё разом и не перегружать приложение)?
Вычисляешь координаты углов видимой части карты и запрашиваешь объекты в пределах этих координат. Вроде всё тривиально
Делал такого типа задачу. Я кидал точки углов карты + зум на бекенд обычным http. Получал в ответе маркеры. Маркеры были статичные. И просто их рисовал на карте Если маркеры динамические, то шли на бекенд по сокету событие "updatePosition" с углами карты и зумом, а он уже будет пушить тебе новые маркеры. Основная сложность это с слабым зумом, когда у нас по сути надо было рисовать 10к точек. И эту штуку мы решили сегментацией. Вместо 50точек, мы собирали это в 1-точку сегмент, и показывали её. Хз устроит ли это решение ваш кейс Когда точки или зум менялись, кидал запрос/евент заново
Бтв, все вычисления на бекенде были, и я только рисовал маркеры
Для начального экрана этот алгоритм работает. Но пользователь будет двигает карту, и нужно будет частично подгружать новые объекты, при этом «сгружать» из памяти часть старых. Ведь пользователь может карту всего на сантиметр подвинуть, не перезагружать же из-за этого всем объекты. Интересует, как это будет функционировать со стороны реакта. Сейчас я просто загружаю все объекты разом и храню их в стейте общего контейнера.
Когда пользователь двигает карту, все объекты заново перерисовываются?
Обсуждают сегодня