Некоторое время назад кто — то спросили у gis.stackexchange.com для хорошей реализации кластера маркеров, как для листовки или OpenLayers , нечто похожего на морской карась . Пару недель назад я обнаружил отличную реализацию для Leaflet, Leaflet.markercluster от Dave Leaver. Просто потрясающе !!!
Характеристики
Leaflet.markercluster плагин для листовка документирована достаточно на веб — странице, так что я не буду повторять его здесь, но я хотел бы сделать краткое резюме своих функций.
Добавить / удалить маркер
Мы можем легко добавить или удалить маркер с помощью методов addLayer и removeLayer. Например:
markers.addLayer( new L.Marker(new L.LatLng(lat, lon), { title: title }) );
События
У нас есть события clusterclick, clustermouseover, clustermouseout и zoomend для взаимодействия с новым уровнем.
Параметры
Leaflet.markercluster плагин имеет некоторые полезные опции, которые по умолчанию они устанавливаются как:
options: {
maxClusterRadius: 60,
iconCreateFunction: null,
spiderfyOnMaxZoom: true,
showCoverageOnHover: true,
zoomToBoundsOnClick: true
},
- maxClusterRadius : все маркеры в этом радиусе становятся кластером.
- iconCreateFunction : позволяет настраивать значки для кластеров. (Смотрите больше здесь ).
- spiderfyOnMaxZoom : Когда вы щелкаете кластер на нижнем уровне масштабирования, мы пауковаем его, чтобы вы могли видеть все его маркеры.
- showCoverageOnHover : при нажатии на кластер мы приближаемся к его границам.
- zoomToBoundsOnClick : при наведении курсора на кластер отображаются границы его маркеров.
var markers = new L.MarkerClusterGroup({
maxClusterRadius: 100,
spiderfyOnMaxZoom: true,
showCoverageOnHover: false,
zoomToBoundsOnClick: true
});
Короткая заметка
Много постов назад я пишу об открытых альтернативах Google Maps, где рассказываю о прекрасном проекте Leaflet, заканчивая предложением: поверьте, взгляните на этот проект, он может сказать еще много . И, кажется, этот замечательный маркерный кластер — один из тех моментов, которые стоит сказать. Кроме того, я наблюдал большую активность в проекте Leaflet, гораздо больше, чем в OpenLayers.
Не путайте, пожалуйста, я говорю об активности, связанной с новостями, когда многие веб-страницы переходят с Google Maps API на Leaflet. Я знаю, что сообщество OpenLayers, как всегда, отлично поработало над следующим основным выпуском проекта, OpenLayers 3.0, с большим количеством улучшений.
В этот момент сравнение между Leaflet и OpenLayers напоминает сравнение одежды для бега или доспехов для сражения. Я хочу сказать, что OpenLayers — это большой и сложный проект, но благодаря этому он позволяет делать практически все, что вам нужно в ГИС-приложении. С другой стороны, Leaflet — более гибкий и легкий проект, предназначенный только для множества вещей. В то время как OpenLayers позволяет получить доступ к серверу плиток (TMS или WMTS), WMS, WFS и т. Д. Leaflet предназначен для доступа к TMS (например, OpenStreetMap, плитки CloudMade и т. Д.).
Суть в том, что Leaflet реализует 10% (если не сказать больше) вещей, реализующих OpenLayers, но эти 10% необходимы для выполнения самых распространенных задач в приложении weg.
Вызов!!!
Кто хочет создать классную кластерную реализацию для OpenLayers?