我第一次使用geoJSON。我用它在我的Leafletjs地图上显示点和多边形。
我有以下内容:我需要在geoJSON文件中拥有59个地图点(大致),5个建筑工地(多边形)和32个建筑物(多边形)。
我不确定是否需要创建多个JSON文件,或者它们是否都存在于一个文件中。我需要将它们分成3组:如果可能的话,在单个JSON文件中将地图点,构造和建筑物分开。
我在文档(geojson.org)上注意到有一个全局类型,他们使用" FeatureCollection"。这可以被称为别的,所以我可以成为我的三个小组吗?我还注意到每个项目的功能集合和功能类型。这些也可以命名吗?
答案 0 :(得分:2)
不,您不能将其他名称用于“FeatureCollection”或“功能”。离GeoJSON最近的群组是为了给每个群组提供一个共同的“标记”。像
"features": [
{"type": "Feature", "properties": {"group": "group1"}, ...},
{"type": "Feature", "properties": {"group": "group2"}, ...},
{"type": "Feature", "properties": {"group": "group3"}, ...}]
然后,使用Leaflet,您可以将功能绑定到弹出窗口,或根据其“group”标签/属性对它们进行不同的样式设置。请参阅http://leafletjs.com/reference.html#geojson。
答案 1 :(得分:2)
正如@sgillies所说,您无法将GeoJSON数据中的type
值更改为与规范提供的内容不同的值。否则,GeoJSON解析器(如Leaflet)将无法理解您的数据是什么。
至于将数据存储到单个文件或多个文件中,由您决定。
现在请注意,无论何时拨打L.geoJson(myGeoJSONdata)
,Leaflet都会创建一个图层组,无论myGeoJSONdata
是FeatureCollection
还是数组Features
。
因此,如果您想在Leaflet中获得3个不同的图层组(例如,如果您希望能够分别打开/关闭每个组),最简单的方法是将您的数据分成3个不同的GeoJSON对象(对于例如,它们可能位于定义3个不同变量的同一JS文件中,也可能位于3个不同的JSON文件中,并且可以在每组数据上单独调用L.geoJson
。
根据您的编程技巧,您还有很多其他可能性,例如在GeoJSON数据中指定属性,指定每个要素属于哪个组(如@sgillies提及),然后通过此属性调用filtering {{3}} 1}}等等。