2016-04-25 79 views
1

我正在与geoJSON第一次合作。我使用它在我的Leafletjs地图上显示点和多边形。geoJSON文件结构

我有以下内容:我需要在我的geoJSON文件中包含59个地图点(粗略),5个施工地点(多边形)和32个建筑物(多边形)。

我不确定是否需要创建多个JSON文件,或者它们是否都生活在一个文件中。如果可能的话,我需要将它们分成3组:地图点,构建和单个JSON文件中的建筑物。

我注意到文档(geojson.org)中有一个全局类型,它们使用“FeatureCollection”。这可以称为别人,所以我可以让我的三个组?我还注意到功能集合和每个项目的功能类型。这些可以被命名为什么?

回答

2

不,您不能使用“FeatureCollection”或“Feature”的其他名称。您最近可以在GeoJSON中参加组,以便为​​每个组的特征提供一个共同的“标签”。 Like

"features": [ 
    {"type": "Feature", "properties": {"group": "group1"}, ...}, 
    {"type": "Feature", "properties": {"group": "group2"}, ...}, 
    {"type": "Feature", "properties": {"group": "group3"}, ...}] 

然后,使用Leaflet,您可以将功能绑定到弹出窗口,或根据其“组”标签/属性对它们进行不同的样式设置。见http://leafletjs.com/reference.html#geojson

2

正如@sgillies所说,您不能将GeoJSON数据中的type值更改为与规范提供的值不同的值。否则,GeoJSON解析器(如Leaflet)将无法理解您的数据是什么。

至于将您的数据存储到单个文件或多个文件取决于您。

现在要注意的是,当你调用L.geoJson(myGeoJSONdata),传单将创建一个单一的图层组,myGeoJSONdata是否是FeatureCollection,或Features数组。

因此,如果您希望在Leaflet中获得3个不同的图层组(例如,如果您希望能够分别打开/关闭每个组),最简单的方法是将数据分成3个不同的GeoJSON对象(例如它们可能位于定义3个不同变量的同一个JS文件中,或者位于3个不同的JSON文件中),并在每组数据上分别调用L.geoJson

你有很多其他的可能性取决于你的编程技能,就像指定GeoJSON的数据中的属性,该属性组中的每个功能通过这个属性属于(如@sgillies提到),然后filtering一边拨打L.geoJson

+1

感谢您的帮助。我结束了创建3个独立的JSON文件,并且一切似乎都在工作。我要为其他一些问题开辟一条新线索。如果你能帮助他们,这将是伟大的。 –