Leaflet-Realtime插件,带有GeoJson和多个标记

时间:2016-01-22 15:49:58

标签: 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');

1 个答案:

答案 0 :(得分:2)

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

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

见这里:https://jsfiddle.net/chk1/hmyxb6ur/