Recurso de GeoJSON do folheto de atualização no local
Eu esperava que GeoJSON.addData () retornasse o subLayer recém-criado do objeto GeoJSON, mas não retorna. Por que preciso de algo assim?
(atualmente usando o Leaflet 1.0Beta2)
Estou usando o Leaflet GeoJson para mostrar dados ao vivo em um GeoJSON (ponto, linha, polígono). É uma interface CRUD (Criar, Atualizar e Excluir). Eu recebo mensagens do WebSocket com dados GeoJSON, cada um com um GUID.
Eu o caso de umCRIO Acabei de fazer um GeoJSon.AddData () na camada apropriada.
Mas para oATUALIZAR eEXCLUIR Quero um identificador para a camada que foi adicionada ao GeoJSON para que eu possa atualizar sua localização ou atualizar a Geometria. addData não está me dando esse identificador. E é realmente difícil obtê-lo em onEachFeature () ou pointToLayer ()
Atualmente, tenho um jeito que funciona, mas é feio. Eu tenho que fazer é pesquisar a camada inteira com GeoJSon.eachLayer (fn) sempre que ocorrer uma atualização ou exclusão. Parece um pouco caro.
{mesmo que o Leaflet não seja realmente projetado para essa exibição de dados em tempo real, ele está funcionando e parece triste se você não puder usá-lo para assistir a muitos dados do sensor, IoT), como estamos fazendo.
this.delete = function (layerName, feature) {
if (!(layerName in self.myLayers)) {
alert("live.display: Missing Layer: " + layerName);
return;
}
var layerInfo = Live.myLayers[layerName];
var base = layerInfo.layer;
var id = feature.properties.objectID;
this.find(layerName, id, function (layer) {
this.removeLayer(layer);
Tools.debug(16, "live.delete:", "killed object: " + id);
});
}
this.find = function (layerName, id, action) {
var base = Live.myLayers[layerName].layer;
base.eachLayer(function (feature) {
if (!("objectID" in feature.feature.properties)) { return; }
var objectID = feature.feature.properties.objectID;
if (objectID == id) {
action.call(base, feature);
}
});
}