Comments 16
Работал с Leaflet. Здорово намучился когда пытался разобраться с кластеризацией маркеров. Есть какой-то leaflet MarkerCluster, но он работает плохо, под какие-то старые версии, в общем, так и забил.
А тут это есть из коробки или еще откуда-нибудь?
Ну смысл такой, что при zoom-out, маркеры (особенно если их много) должны не отрисовываться все, а группироваться в кластеры, которые показываются в виде окружности. Чем больше в кластере маркеров, тем больше диаметр окружности, а по центру в ней - количество маркеров цифрой. Надеюсь понятно объяснил.
А тут это есть из коробки или еще откуда-нибудь?
Есть, вот ссылки на примеры:
Clustered Features (скорее всего этот вариант нужен)
Однако, мы с командой пока их не использовали, поэтому не могу ничего от себя написать. С кластерами Leaflet когда-то сам успел немного поработать. Но у меня прям простой случай был и всё, как помню, было неплохо.
С кластерами наборов маркеров не работали через эту библиотеку
А в import { Map, View } from "ol";
перегрузка встроенного класса - не пугает?
Извините, не очень понял комментарий. Что имеется в виду под "перегрузкой встроенного класса"?
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. Яндекс.Карты то же количество проглатывают без проблем, тут начинаются тормоза. Какие пути решения этой проблемы можете посоветовать?
Введение в OpenLayers