2016-03-27 11 views
0

Ich versuche, Leaflet Echtzeit-Plugin (https://github.com/perliedman/leaflet-realtime) verwenden, sie in der Dokumentation erwähnt, dass wir vorherige Updates durch Hinzufügen von start: false im Konstruktor beibehalten können.So behalten Sie frühere Daten in Leaflet Realtime

var map = L.map('map'), 
    realtime = L.realtime({ 
     url: 'https://wanderdrone.appspot.com/', 
     crossOrigin: true, 
     type: 'json' 
    }, { 
     interval: 3 * 1000, start:false 
    }).addTo(map); 

Wer hat eine bessere Idee, wie man das macht?

plnkr hat eine gute Demo:

http://plnkr.co/edit/NmtcUa?p=preview 

Antwort

0

Wenn Sie setzen start: false, wird die automatische Updates deaktiviert werden. Das bedeutet, dass Sie die Methode update des Layers selbst aufrufen müssen, indem Sie alle GeoJSON-Daten bereitstellen, die Sie hinzufügen oder aktualisieren möchten. Sie können hinzugefügte Funktionen auch mit der Methode remove entfernen. Diese Methoden können verwendet werden, wenn Sie etwas anderes als das Server-Polling verwenden möchten.

0

Sie können den folgenden Code verwenden, den ich von PLNKR kopiert habe, während ich ein wenig geändert habe, weil L.realtime L.geoJson erbt. Und L.geoJson haben "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); 
}); 
Verwandte Themen