悬停时显示地图标记
Show map markers on hover
我有几个位置的链接列表。我想将地图标记添加到我的 OSM 地图并在我悬停时将其删除,同时添加我悬停的新标记等。我已经能够在悬停时向地图添加标记但我无法删除他们。
HTML
<a href="/..." onmouseover="mkron(this)" onmouseout="mkroff()">...</a>
JS
function mkron(x) {
// some code to get lat lon
L.marker([lat, lon]).addTo(map);
}
function mkroff() {
markers.clearLayers();
}
我错过了什么?
您的问题是您将标记直接添加到地图,而不是将其添加到 LayerGroup / FeatureGroup markers
。
我不知道你的其余代码,但它应该是这样的:
var markers = L.featureGroup().addTo(map);
function mkron(x) {
// some code to get lat lon
L.marker([lat, lon]).addTo(markers);
}
function mkroff() {
markers.clearLayers();
}
另一种变体是将图层存储在全局变量中,然后将其从地图中删除:
var marker;
function mkron(x) {
// some code to get lat lon
marker = L.marker([lat, lon]).addTo(map);
}
function mkroff() {
if(marker){
map.removeLayer(marker)
marker = null;
}
}
我有几个位置的链接列表。我想将地图标记添加到我的 OSM 地图并在我悬停时将其删除,同时添加我悬停的新标记等。我已经能够在悬停时向地图添加标记但我无法删除他们。
HTML
<a href="/..." onmouseover="mkron(this)" onmouseout="mkroff()">...</a>
JS
function mkron(x) {
// some code to get lat lon
L.marker([lat, lon]).addTo(map);
}
function mkroff() {
markers.clearLayers();
}
我错过了什么?
您的问题是您将标记直接添加到地图,而不是将其添加到 LayerGroup / FeatureGroup markers
。
我不知道你的其余代码,但它应该是这样的:
var markers = L.featureGroup().addTo(map);
function mkron(x) {
// some code to get lat lon
L.marker([lat, lon]).addTo(markers);
}
function mkroff() {
markers.clearLayers();
}
另一种变体是将图层存储在全局变量中,然后将其从地图中删除:
var marker;
function mkron(x) {
// some code to get lat lon
marker = L.marker([lat, lon]).addTo(map);
}
function mkroff() {
if(marker){
map.removeLayer(marker)
marker = null;
}
}