如何获取对象并将其保存到新对象

时间:2014-05-12 00:45:27

标签: javascript json leaflet geojson

我正在尝试使用Leaflet构建一个webmap。我的数据存储在压缩的shapefile中,所以我使用shapefile-js,这允许我加载和使用数据。我的程序加载压缩的shapfile并将内容添加到geoJson对象 下一件大事:我想抓住geoJson对象,使用例如datatables.netjson 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)。如前所述:它通过使用控制台工作,但不是通过在我的代码中放置行: - / 任何帮助都很感激:)

0 个答案:

没有答案