Leaflet-带有 GeoJson 和多个标记的实时插件

标签 leaflet real-time geojson

大家好,我正在尝试更新我的标记位置,但我没能找到如何删除旧标记的方法。我得到的只是标记的“历史”。我没有任何可以帮助我的例子。我希望有人能给我一个线索继续下去。 非常感谢 Per Liedman为了出色的工作。

                    var shipLayer = L.layerGroup();
                    var ships = L.icon({
                        iconUrl: '../icons/ship-icon.png',
                        iconSize: [30, 30]
                    });
                    var realtime = L.realtime({
                        url: 'jsonServlet/ships.json',
                        crossOrigin: true,
                        type: 'json'
                    }, {
                        interval: 5 * 1000,
                        pointToLayer: function (feature, latlng) {

                            marker = L.marker(latlng, {icon: ships});
               marker.bindPopup('mmsi: ' + feature.properties.mmsi +
                               '<br/> course:' + feature.properties.hdg+
                               '<br/> speed:' + feature.properties.sog);
                               marker.addTo(shipLayer);
                               return marker;
                        }                            
                    });  
                  controlLayers.addOverlay(geojson, 'Ships');

最佳答案

默认情况下,L.realtime 使用特征的 id 属性来更新它。正如您在评论中所解释的那样,您的船只的标识符位于 GeoJSON 功能的 mmsi 属性中,并且没有 id。您需要将其添加到 options 中的 L.realtime 设置中:

getFeatureId: function(featureData){
    return featureData.properties.mmsi;
}

参见此处:https://jsfiddle.net/chk1/hmyxb6ur/

关于Leaflet-带有 GeoJson 和多个标记的实时插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34950636/

相关文章:

javascript - Leaflet MarkerCluster - 如何在事件(鼠标悬停,鼠标单击)时获取集群内的标记?

memory-management - 什么类型的输入会减慢动态内存分配器 malloc() 和 free() 的执行时间?

c++ - 在实时环境中仍然不希望出现异常吗?

php - 使用哪个正则表达式将此字符串转换为数组?

javascript - GeoJson amchart maps geoJson 有什么问题?

mysql - "leaflet"如何使用 MySQL 数据库存储和检索(搜索)标记?

javascript - 是否可以定义一个将重试加载的层,例如指数退避?

javascript - 使用 javascript 循环渲染文本 - 浏览器无响应

node.js - 如何简化和消除 GeoJSON 多边形中的重叠

javascript - 在 Leaflet LayerGroup 中查找特定图层,其中图层是多边形