leaflet - 如何定期更新geojson标记
问题描述
我想要做的是使用带有 OSM 地图的 Leaflet,并以 GeoJSON 格式从 PHP 加载数据 + 定期更新。
我可以设法显示地图,加载数据,但不知道如何更新点而不是添加新点。
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
extends from LayerGroup
which 提供了一个名为clearLayers
( docs ) 的函数,因此您可以调用它来清除图层中的标记。
此外,建议您将 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();
推荐阅读
- apache-spark - 在所有 DataFrame 列中搜索关键字并过滤
- django - Django 更改 url 模式
- ios - 如何为所有语言自动添加新字符串到 Localizable.strings?
- ios - 动画不适用于插入的 CAGradientLayer 作为子层
- performance - 网络工作者 - firefox vs. chromium(Chrome 和 MS Edge)
- firebase - Firestore 规则:处理单个文档而不是范围查询,为什么会这样?
- vue.js - 当在导航栏上单击按钮时,bootstrap-vue 导航栏不会在移动设备中展开
- javascript - 如何修复管道中的 Ramda drop dropLast 类型错误?
- nuxt.js - 使用 nuxtServerInit 和 API
- php - 在我的帐户中添加个人资料图片(文件上传)> 在 WooCommerce 中编辑帐户