Pull to refresh

Comments 16

Работал с Leaflet. Здорово намучился когда пытался разобраться с кластеризацией маркеров. Есть какой-то leaflet MarkerCluster, но он работает плохо, под какие-то старые версии, в общем, так и забил.

А тут это есть из коробки или еще откуда-нибудь?

Ну смысл такой, что при zoom-out, маркеры (особенно если их много) должны не отрисовываться все, а группироваться в кластеры, которые показываются в виде окружности. Чем больше в кластере маркеров, тем больше диаметр окружности, а по центру в ней - количество маркеров цифрой. Надеюсь понятно объяснил.

А тут это есть из коробки или еще откуда-нибудь?

Есть, вот ссылки на примеры:

Однако, мы с командой пока их не использовали, поэтому не могу ничего от себя написать. С кластерами Leaflet когда-то сам успел немного поработать. Но у меня прям простой случай был и всё, как помню, было неплохо.

С кластерами наборов маркеров не работали через эту библиотеку

Извините, не очень понял комментарий: вы не успели поработать с кластерами наборов маркеров, или сами кластеры неправильно работали?

Это вопрос был :)

Не поставил вопросительный знак

Ааа, понял 😁 Мы пока не работали с кластерами, больше с рисованием и изменением объектов на карте

Извините, не очень понял комментарий. Что имеется в виду под "перегрузкой встроенного класса"?

Map - встроенный класс JS. Библиотека экспортирует одноимённую сущность, фактически мы перегружаем встроенный класс своим.

Хорошо, понял теперь вопрос.

Поскольку примеры написаны только для статьи, в которой не используется Map, я написал примеры с простым импортом. Если нужен и Map из JS и Map из OpenLayers, то достаточно просто переписать импорт на:

import { Map as OlMap } from "ol";

На практике не припомню, чтобы это было нужно в нашем случае. У нас было больше пересечений с типами geojson (используем typescript), вроде Point или Polygon. Но здесь мы просто решили использовать типы в формате GeoJSON.Point и GeoJSON.Polygon.

Меня базово настораживает, когда авторы библиотеки делают экспорты, перегружающие стандартную библиотеку. Мало ли какой ещё кунштюк им в голову залезет :)

Так-то как импортировать под другим именем - это понятно :)

позанудствую...

EPSG:4326 это не проекция, этого географическая система координта с угловыми координатами в градусах на эллипсоиде WGS-84

Интересно, а в OpenLayers можно реализовать подписи (нумерацию) точек границы?

Я уверен что можно. В Style можно вставить свою renderer функцию. В ней уже можно рисовать абсолютно что угодно.

new Style({
  renderer(pixelCoordinates, state) {
    const ctx = state.context; // canvas
    const geometry = state.geometry; // Объект из ol/geom. Например, Polygon
  }
});

Пример: Custom Circle Render

Нужно немного поиграться, конечно, но не прям сложно. Мы так реализовали свои кастомные всплывашки с кастомной информацией со стороны.

Я планирую сделать статью про стилизацию, в которой опишу renderer . Но не могу сказать когда выйдет, у меня есть проблемы со свободным временем )

В НСПД, скорее всего, будет такая задачка для компоненты встраиваемой карты: подписывать и растаскивать подписи точек (для создания межевого плана, карты-плана территории и пр).....

Даниил, подскажите. Сталкиваемся с большими проблемами с производительностью при размещении на карте большого количества полигонов в OL. Яндекс.Карты то же количество проглатывают без проблем, тут начинаются тормоза. Какие пути решения этой проблемы можете посоветовать?

Sign up to leave a comment.

Articles