Leaflet - 在点击时将 class 添加到标记图标
Leaflet - add class to marker icon on click
我有一张简单的传单地图和一些标记。为了给用户更好的体验,我想突出显示点击的标记。最好和最简单的方法是,如果我可以向单击的标记添加一个额外的 class 以使用它处理 css。但我不知道如何,我发现的所有内容都没有回答我的问题,或者我只是不明白。
Javascript
//Set the marker icon
var markerIcon = L.vectorIcon({
className: 'markerIcon',
svgHeight: 30,
svgWidth: 30,
shape: {r: '15', cx: '15', cy: '15'},
style: {
fill: '#73B0E1'
}
});
//Populate the map with markers
var markers = L.markerClusterGroup({});
if(mapID == 'mapPublic') {
markers.addLayer(L.marker([50, 8], {icon: markerIcon})).on('click', onClick);
markers.addLayer(L.marker([50, 8.1], {icon: markerIcon})).on('click', onClick);
markers.addLayer(L.marker([50, 8.2], {icon: markerIcon})).on('click', onClick);
markers.addLayer(L.marker([50.1, 8.1], {icon: markerIcon})).on('click', onClick);
}
map.addLayer(markers);
//Onclick Function for the markers
function onClick() {}
如何向标记添加第二个 class 以便在 css 中使用它?我已经试过了 this.classList.add('activeMarker')
但它没有用,我想是因为传单标记逻辑。
标记不是 DOM 对象,因此尝试向其添加 类 是没有用的。
如果您尝试设置图标样式,您可以使用
function onClick(e) {
e.layer._icon.classList.add('activemarker');
}
我有一张简单的传单地图和一些标记。为了给用户更好的体验,我想突出显示点击的标记。最好和最简单的方法是,如果我可以向单击的标记添加一个额外的 class 以使用它处理 css。但我不知道如何,我发现的所有内容都没有回答我的问题,或者我只是不明白。
Javascript
//Set the marker icon
var markerIcon = L.vectorIcon({
className: 'markerIcon',
svgHeight: 30,
svgWidth: 30,
shape: {r: '15', cx: '15', cy: '15'},
style: {
fill: '#73B0E1'
}
});
//Populate the map with markers
var markers = L.markerClusterGroup({});
if(mapID == 'mapPublic') {
markers.addLayer(L.marker([50, 8], {icon: markerIcon})).on('click', onClick);
markers.addLayer(L.marker([50, 8.1], {icon: markerIcon})).on('click', onClick);
markers.addLayer(L.marker([50, 8.2], {icon: markerIcon})).on('click', onClick);
markers.addLayer(L.marker([50.1, 8.1], {icon: markerIcon})).on('click', onClick);
}
map.addLayer(markers);
//Onclick Function for the markers
function onClick() {}
如何向标记添加第二个 class 以便在 css 中使用它?我已经试过了 this.classList.add('activeMarker')
但它没有用,我想是因为传单标记逻辑。
标记不是 DOM 对象,因此尝试向其添加 类 是没有用的。
如果您尝试设置图标样式,您可以使用
function onClick(e) {
e.layer._icon.classList.add('activemarker');
}