Клуб API Карт

Миграция с objectManager -> loadingManager

Artem Bukhtoiarov
26 мая, 18:30

Мы до какого-то времени использовали objectManager для карт.

Но количество меток растет и загрузка карты начинает тупить. Вообщем решили использовать loadingManager.

У нас в базе хранятся координаты типа широта и долгота (lat, long). 

Для loadingManager решили использовать загрузку со splitRequests = false с tileBounds

Номера тайлов получаю так

zoom = window.nedroMap.getZoom();
coords = go.geometry.coordinates;
globalPixelCoordinates = window.nedroMap.options.get('projection').toGlobalPixels(coords, zoom);
      tileNumber = [Math.floor(globalPixelCoordinates[0] / 256), Math.floor(globalPixelCoordinates[1] / 256)];

Дальше мне нужно tileNumber для каждого гео-объекта записать в базу. Но zoom ведь тоже нужно как-то корректно получить. Как вот для каждого объекта определить подходящйи зум ? 

Или может есть хорошие практики и я вообще все неверно делаю. Нужна вообщем помощь.

Спасибо.

3 комментария
Подписаться на комментарии к посту
что значит "подходящий зум" для каждого объекта?
чем поможет LOM если на обзорном масштабе вы все равно будете все загружать?



Хорошие практики – запись quadKey с каждой точкой и поиск по нему при каждом потайловом запросе.


Ссылка на пример реализации с RemoteObjectManager есть в статье про OM на хабре.

Artem Bukhtoiarov
29 мая, 15:14
dimik,



Спасибо за ответ.


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



Подходящий зум - это тот зум который мне нужно хранить в базе. Данный зум я изначально ведь не знаю. 


Если я верно понял, то LOM нет смысла использовать т.к. кластеризация происходит на клиенте и если я охватываю например всю Россию, то у меня все метки должны загрузиться ? А это меток может быть 20-30 тыс и это будет очень долго.


Т.е. по сути нужно использовать RemoteObjectManager, сервер сделаю всю работу сам и отдаст уже готовый результат на клиент ?
 
За примеры спасибо

Artem Bukhtoiarov,
Если объекты вы планируете показывать на всех масштабах, а не только на определенных, то никакого подходящего зума нет. В базе с объектом надо хранить номер тайла, на котором будет показан объект (для каждого масштаба) – собственно эта информация и хранится в quadKey.
При таком количестве меток конечно лучше ROM + кластеризация на сервере + правильные заголовки кеширования.