我正在尝试使用Leaflet实时插件(https://github.com/perliedman/leaflet-realtime),他们在文档中提到我们可以通过在构造函数中添加start:false来保留以前的更新。
var map = L.map('map'),
realtime = L.realtime({
url: 'https://wanderdrone.appspot.com/',
crossOrigin: true,
type: 'json'
}, {
interval: 3 * 1000, start:false
}).addTo(map);
任何人都有更好的想法如何做到这一点?
plnkr有一个很好的演示:
http://plnkr.co/edit/NmtcUa?p=preview
答案 0 :(得分:0)
如果设置start: false
,则会禁用自动更新。这意味着您必须自己调用图层的update
方法,提供您要添加或更新的任何GeoJSON数据;您还可以使用remove
方法删除添加的功能。如果要使用服务器轮询以外的其他方法,可以使用这些方法。
答案 1 :(得分:0)
你可以使用我从plnkr复制的以下代码,但是由于L.realtime继承了L.geoJson。而L.geoJson有'layeradd'。
realtime.on('layeradd', function(e) {
var coordPart = function(v, dirs) {
return dirs.charAt(v >= 0 ? 0 : 1) +
(Math.round(Math.abs(v) * 100) / 100).toString();
},
popupContent = function(fId) {
var feature = e.features[fId],
c = feature.geometry.coordinates;
return 'Wander drone at ' +
coordPart(c[1], 'NS') + ', ' + coordPart(c[0], 'EW');
},
bindFeaturePopup = function(fId) {
realtime.getLayer(fId).bindPopup(popupContent(fId));
},
updateFeaturePopup = function(fId) {
realtime.getLayer(fId).getPopup().setContent(popupContent(fId));
};
map.fitBounds(realtime.getBounds(), {maxZoom: 3});
Object.keys(e.enter).forEach(bindFeaturePopup);
Object.keys(e.update).forEach(updateFeaturePopup);
});