如何引用现有GeoJSON传单对象的数据
How to reference the data of an existing GeoJSON leaflet object?
我们有一个传单地图,我们正在尝试使用GeoJSON构建。我们的数据来自实时流,因此我们首先使用空数据初始化GeoJSON:
var myLayer = L.geoJson([], {
style: function(feature) {
var color = getDataband(LATENCY_BANDS, feature.properties.latency).color;
return {
fillColor: color
};
},
pointToLayer: function(feature, latlng) {
return L.circleMarker(latlng, geojsonMarkerOptions);
},
filter: function(feature, layer) {
var latency = feature.properties.latency;
for (var i = 0; i < ENABLED_LATENCY_BANDS.length; i++) {
if (ENABLED_LATENCY_BANDS[i].contains(latency)) {
return true;
}
}
return false;
}
});
当消息从实时流传入时,我们通过调用
逐个添加数据点:var geojsonFeature = {
"type": "Feature",
"properties": {
"latency": sample.latency
},
"geometry": {
"type": "Point",
"coordinates": [location.longitude, location.latitude]
}
};
myLayer.addData(geojsonFeature);
然而,我们的过滤器会根据用户输入动态改变。因此,我们需要删除所有现有数据,并在用户输入发生变化时将所有数据重新添加到映射中,以便新过滤器应用于所有现有数据和新数据。每当用户输入发生变化时,我们尝试调用以下命令:
map.removeLayer(myLayer);
myLayer.addTo(map);
但是,当myLayer
被重新添加到map中时,旧的数据被清除,只出现新的数据。
看起来我们应该在调用myLayer.addTo(map)
之前重新初始化myLayer
对象,但是我们不知道如何用现有的特征数据重新初始化myLayer
。文档没有解释如何引用GeoJSON传单对象的数据。
我们如何引用GeoJSON传单对象的数据?
谢谢。
filter
选项仅在实例化和使用.addData()
方法时有效。此外,当一个特征被过滤掉时,它不仅仅是"隐藏",它没有记录在内存中(即不在该组中)。
奇怪的是,你的旧数据是通过删除组并将其添加回映射来清除的,无论你是否更改了过滤条件。
无论如何,在你试图实现的意义上,可能没有关于如何"引用GeoJSON传单对象的数据"的文档,因为它依赖于实现。
在你的例子中,你需要在一个隐藏的组/数组中积累你的特征,这样当你的过滤器条件改变时,你可以通过新的过滤器重新评估这些特征。
例如,可以这样做:
var accumulatedFeatures = [];
// When data arrives
accumulatedFeatures.push(geojsonFeature);
myLayer.addData(geojsonFeature);
// When filter conditions change
myLayer.clearLayers(); // http://leafletjs.com/reference-1.0.0.html#layergroup-clearlayers
myLayer.addData(accumulatedFeatures); // Re-evaluate all data through new filter
相关文章:
- Mapbox JS,来自URL的GeoJSON featureCollection对象只添加了一个标记
- 使用传单和geoJson监控对象
- 将表单对象保存到具有主干.js的模型
- 从JQuery到Javascript函数获取表单对象
- 如何创建 XMLHttpRequest FormData 表单对象
- 转换使用 data() 保存的字符串表单对象
- AngularJS 模态对话框表单对象在控制器中未定义
- “blur”事件是否仅针对 HTML 表单对象触发
- 弹簧更改提交,表单对象为空
- Jqtransform 针对特定的表单对象(不是全部)
- AngularJS验证引用具有变量名称的表单对象
- 本地生成的geoJSON格式对象的OpenLayers协议
- 触发标准“;改变“;表单对象上的事件-由其上的任何侦听器拾取
- 表单元素覆盖表单对象的默认属性
- 表单对象中的换行符
- Typescript AngularJS访问表单对象
- 在jquerypost中同时传递表单对象和一个变量
- 在位置更改时将表单对象发送到页面
- 从返回的表单对象中读取InnerHTML
- jQuery中给定表单对象,测试表单元素是否为空