Leaflet 如何定期更新geojson标记
我想做的是使用带有OSM地图的传单, 并以GeoJSON格式从PHP加载数据,并定期更新 我可以设法显示地图,加载数据,但不知道如何更新点,而不是仍然添加新点Leaflet 如何定期更新geojson标记,leaflet,openstreetmap,geojson,markers,Leaflet,Openstreetmap,Geojson,Markers,我想做的是使用带有OSM地图的传单, 并以GeoJSON格式从PHP加载数据,并定期更新 我可以设法显示地图,加载数据,但不知道如何更新点,而不是仍然添加新点 function update_position() { $.getJSON('link_to_php', function(data) { //get data into object var geojsonFeature = JSON.parse(data);
function update_position() {
$.getJSON('link_to_php', function(data) {
//get data into object
var geojsonFeature = JSON.parse(data);
// how to remove here old markers???
//add new layer
var myLayer = L.geoJSON().addTo(mymap);
//add markers to layet
myLayer.addData(geojsonFeature);
setTimeout(update_position, 1000);
});
}
update_position();
已尝试mymap.removeLayer(“myLayer”);但这似乎在函数内部起作用。请帮助
L.geoJSON
扩展自LayerGroup
,它提供了一个名为clearLayers
()的函数,因此您可以调用该函数来清除层中的标记
此外,建议将layer变量置于函数外部:
var geoJSONLayer = L.geoJSON().addTo(mymap);
function update_position() {
$.getJSON('link_to_php', function(data) {
//get data into object
var geojsonFeature = JSON.parse(data);
geoJSONLayer.clearLayers();
//add markers to layet
geoJSONLayer.addData(geojsonFeature);
setTimeout(update_position, 1000);
});
}
update_position();
L.geoJSON
扩展自LayerGroup
,它提供了一个名为clearLayers
()的函数,因此您可以调用该函数来清除层中的标记
此外,建议将layer变量置于函数外部:
var geoJSONLayer = L.geoJSON().addTo(mymap);
function update_position() {
$.getJSON('link_to_php', function(data) {
//get data into object
var geojsonFeature = JSON.parse(data);
geoJSONLayer.clearLayers();
//add markers to layet
geoJSONLayer.addData(geojsonFeature);
setTimeout(update_position, 1000);
});
}
update_position();
谢谢你能解决我提到的问题。然而,这个解决方案有一个小问题。标记正在“闪烁”。当我处于标记的刷新位置时,即使是完全相同的标记也会在刷新时闪烁(每1000毫秒一次)。你知道怎么绕过它吗?也许更新标记而不是删除并再次绘制?我将感谢任何帮助当然,它看起来像闪烁,因为你先删除它,然后添加它。一旦您的响应返回,您可以检查每个功能,看看它是否存在于地图中,如果不存在,只需添加它即可。在这种情况下,您必须确保功能可以相互区分,例如,每个功能都有一个唯一的id。谢谢您解决了我提到的问题。然而,这个解决方案有一个小问题。标记正在“闪烁”。当我处于标记的刷新位置时,即使是完全相同的标记也会在刷新时闪烁(每1000毫秒一次)。你知道怎么绕过它吗?也许更新标记而不是删除并再次绘制?我将感谢任何帮助当然,它看起来像闪烁,因为你先删除它,然后添加它。一旦您的响应返回,您可以检查每个功能,看看它是否存在于地图中,如果不存在,只需添加它即可。在这种情况下,您必须确保功能可以相互区分,例如,每个功能都有一个唯一的id。