Я создал карту с кластерами, созданными следующим образом:
//create clustering markers
var markers = L.markerClusterGroup({
spiderfyOnMaxZoom: false,
showCoverageOnHover: false,
zoomToBoundsOnClick: false,
singleMarkerMode: true, //makes sure that single incidents looks the same as clusters (but are still treated as single markers)
iconCreateFunction: defineClusterIcon
});
var layer_group = L.geoJSON(geoJson);
markers.addLayer(layer_group);
map.addLayer(markers);
map.fitBounds(markers.getBounds());
В функции defineClusterIcon я создаю SVG, который затем преобразуется в HTML и определяет значок:
return L.divIcon({
iconSize: new L.Point(40, 45),
html: html,
classname: 'leaflet-div-icon'
});
Теперь я хочу иметь возможность изменять стиль кластера (или маркера, который также стилизован как кластер) при нажатии на него - и я хочу, чтобы он вернулся к исходному стилю при повторном нажатии.
Вместо того, чтобы менять стиль фактических элементов svg, я думаю, что было бы проще просто изменить стиль класса:
.leaflet-div-icon {
background: rgba(0,0,0,0);
border: none;
}
Где я хочу получитьграницы, когда кластер / маркер был нажат.Я не знаю, возможно ли изменить класс в функциях on clusterclick
или click
, или это можно сделать другим способом.
Мой код, как он есть сейчас, можно найти здесь, где искомый эффект также можно увидеть на элементах управления с правой стороны: http://bl.ocks.org/skov94/f006cd45d2daa2bc67e4f514774fdd0d