在传单中将新创建的多边形转换为 GeoJSON

Convert a newly created polygon to GeoJSON in Leaflet

我通过单击我的网络应用程序中的按钮来创建不同大小的多边形。

我还在对象内部添加了一些值作为嵌套对象,例如 {properties:{status:'active'}}。然后我使用多边形的 运行 toGeoJSON() 方法并得到一个带有 propertiesgeometry 对象的对象。 properties 对象为空。

我的问题是如何将我的值添加到对象中,以便它们在转换时传递给 GeoJSON 对象?

为多边形创建 GeoJSON 对象时,多边形上的任何 "extra" 数据都将丢失。只有多边形的坐标会被传递到 GeoJSON 对象中。请参阅 Leaflet 源代码中 layer/GeoJSON.js 中的第 213 和 171 行。在第 171 行,您可以看到创建了一个新对象,该对象具有一个名为 "properties" 的属性,但该属性与您的多边形上名为 "properties" 的任何属性无关。

创建 GeoJSON 对象后,您可以通过执行以下操作将多边形中的属性复制到 GeoJSON 对象的属性对象中。但是 - 我不确定 "properties" 对象在 GeoJSON 规范中的具体含义(如果有的话)。

var json = polygon.toGeoJSON();
L.extend(json.properties, polygon.properties)

InPursuits 的答案对我来说绝对有用...

var rect = L.rectangle(bounds).toGeoJSON();
L.extend(rect.properties, {
    itemIndex: v.itemIndex
});