Статьи

Удивительные кластерные маркеры в листовке

Некоторое время назад кто — то спросили у 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?