【问题标题】:Convert a newly created polygon to GeoJSON in Leaflet在 Leaflet 中将新创建的多边形转换为 GeoJSON
【发布时间】:2015-02-06 12:38:15
【问题描述】:
我通过单击 web 应用程序中的按钮来创建不同大小的多边形。
我还在对象内部添加了一些值作为嵌套对象,例如{properties:{status:'active'}}。然后我运行多边形的toGeoJSON() 方法并得到一个带有properties 和geometry 对象的对象。 properties 对象为空。
我的问题是如何将我的值添加到对象中,以便在转换时将它们传递给 GeoJSON 对象?
【问题讨论】:
标签:
javascript
leaflet
geojson
【解决方案1】:
为多边形创建 GeoJSON 对象时,多边形上的任何“额外”数据都会丢失。只有多边形的坐标被传递到 GeoJSON 对象中。请参阅 Leaflet 源中 layer/GeoJSON.js 中的第 213 和 171 行。在第 171 行,您可以看到创建了一个新对象,并且该对象有一个名为“properties”的属性,但该 properties 属性与 Polygon 上的任何名为“properties”的属性无关。
创建 GeoJSON 对象后,您可以通过执行以下操作将 Polygon 中的属性复制到 GeoJSON 对象的属性对象中。但是 - 我不确定“属性”对象在 GeoJSON 规范中的具体含义(如果有的话)。
var json = polygon.toGeoJSON();
L.extend(json.properties, polygon.properties)
【解决方案2】:
InPursuits 的答案肯定对我有用...
var rect = L.rectangle(bounds).toGeoJSON();
L.extend(rect.properties, {
itemIndex: v.itemIndex
});