我有一个函数,可以检索包含地震数据的 JSON,并将其添加到 Leaflet map 中,并在 10 秒后再次检索 JSON(用于刷新数据):
function fetchQuake() {
fetch('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.geojson')
.then(function(res) {
if (res.ok === true) {
return res.json();
} else {
alert('Geojson request failed.');
}
})
.then(function(quake) {
L.geoJSON(quake, {
style: function(feature) {
return feature.properties && feature.properties.style;
},
onEachFeature: onEachFeature,
pointToLayer: function(feature, latlng) {
return L.circleMarker(latlng, {
radius: 8,
fillColor: "#ff7800",
color: "#000",
weight: 1,
opacity: 1,
fillOpacity: 0.8
});
}
}).addTo(map);
myQuakeTimeout = setTimeout(function() {
fetchQuake();
}, 10000);
});
}
还有一个从这些点清除 map 的函数:
function clearQuake() {
clearTimeout(myQuakeTimeout);
L.geoJSON().clearLayers();
}
使用这些代码,超时停止,但地震点没有离开 map ,问题是什么?
最佳答案
使用此代码,您的 clearQuake()
函数永远不会被调用,因此 L.geoJSON().clearLayers()
永远不会执行。
这就是您的积分不会从 map 上消失的原因。
如果您想在添加新获取的点之前删除以前的点,您可以执行以下操作:
/* ... */
.then(function(quake) {
L.geoJSON().clearLayers();
L.geoJSON(quake, {
/* ... */
}).addTo(map);
myQuakeTimeout = setTimeout(fetchQuake, 10000);
});
关于javascript - 从 Leaflet map 中删除 geoJSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45283462/