我正在尝试使用Leaflet构建一个webmap。我的数据存储在压缩的shapefile中,所以我使用shapefile-js,这允许我加载和使用数据。我的程序加载压缩的shapfile并将内容添加到geoJson对象 下一件大事:我想抓住geoJson对象,使用例如datatables.net或json Table在表格视图中可视化数据。
首先找到以下代码:
var m = L.map('map', {
center : [51.3, 10.3],
zoom : 6,
minZoom : 6,
maxZoom : 10
});
var geo = L.geoJson({
features : []
}, {
onEachFeature : function (feature, layer) {
layer.on({
click : displayInfos
});
layer.bindLabel(layer.feature.properties.GEN, {
direction : 'auto'
});
},
style : style,
}).addTo(m);
// add the shapefile to the geojson object `geo`
shp('zipped_shapefile.zip').then(function (data) {
geo.addData(data);
});
现在我有一些问题:
1。)如前所述,现在我想以(geo)json对象的形式访问数据。使用Chrome的开发者工具,我要求提供以下输出:
e {options:Object,_layers:Object,_initHooksCalled:true,_leaflet_id:22,_ map:e ...}
以下是为什么:为什么这不是FeatureCollection类型?只有这样,如果我使用geo.toGeoJSON();
,其中geo是L.geoJson对象(检查上面的代码)。
2。)我试图用解决方法解决问题。所以...使用开发者控制台我输入
> geo2 = geo.toGeoJSON();
我得到以下结果:
对象{type:" FeatureCollection",features:Array [412]}
这正是我想要的,不是吗?它是一个json对象......在我看来,我只需要在我的代码末尾添加这一行(参见大代码块),但通过这样做,我只得到一个空的FeatureCollection对象。 / p>
> geo2
Object {type: "FeatureCollection", features: Array[0]}
我需要知道,我如何将地理对象(无论出于什么原因,地理对象无法作为json对象(问题1))存储为json对象(问题2)。如前所述:它通过使用控制台工作,但不是通过在我的代码中放置行: - / 任何帮助都很感激:)