Leaflet 如何在GeoJSON中使用单点+;多边形?

Leaflet 如何在GeoJSON中使用单点+;多边形?,leaflet,mapbox,geojson,Leaflet,Mapbox,Geojson,如何将点作为单个要素添加到多边形中?根据GeoJson规范,这被称为“GeometryCollection” GeometryCollection'示例: 我尝试向多边形要素添加一个点,但无法在mapbox地图上显示,因为我猜它是无效的GeoJson 有人知道这样做的正确方法吗?网络上的例子不多。 我的看法: 我不确定您实际想要实现什么,因为您说要创建geometrycollection,但在您的示例中,您创建的featurecollection与目前为止的不一样 featurecollecti

如何将点作为单个要素添加到多边形中?根据GeoJson规范,这被称为“GeometryCollection”

GeometryCollection'示例:

我尝试向多边形要素添加一个点,但无法在mapbox地图上显示,因为我猜它是无效的GeoJson

有人知道这样做的正确方法吗?网络上的例子不多。

我的看法:


我不确定您实际想要实现什么,因为您说要创建geometrycollection,但在您的示例中,您创建的featurecollection与目前为止的不一样

featurecollection是功能的集合:

类型为“FeatureCollection”的GeoJSON对象是FeatureCollection对象。“FeatureCollection”类型的对象必须具有名为“features”的成员。“features”对应的值是一个数组

以下是featurecollection的一个示例:

{
    type: "FeatureCollection",
    features: [{
        "type": "Feature",
        "properties": {
            "value": "foo"
        },
        "geometry": {
            "type": "Point",
            "coordinates": [0,0]
        }
    }, {
        "type": "Feature",
        "properties": {
            "value": "bar"
        },
        "geometry": {
            "type": "Polygon",
            "coordinates": [[[45, 45], [45, -45], [-45, -45], [-45, 45], [45,45]]]
        }
    }]
}
geometrycollection是单个要素(可以包含在要素集合中):

类型为“Feature”的GeoJSON对象是Feature对象。要素对象必须具有名为“几何体”的成员。几何体成员的值是上面定义的几何体对象或JSON空值。要素对象必须具有名为“属性”的成员。properties成员的值是一个对象(任何JSON对象或JSON空值)。如果特征具有常用标识符,则该标识符应作为名称为“id”的特征对象的成员包含

具有多个几何图形:

类型为“GeometryCollection”的GeoJSON对象是表示几何体对象集合的几何体对象。几何图形集合必须具有名为“几何图形”的成员。“几何体”对应的值是一个数组。此数组中的每个元素都是GeoJSON几何体对象

下面是geometrycollection功能的一个示例:

{
    "type": "GeometryCollection",
    "properties": {
        "value": "foo"
    },
    "geometries": [{
        "type": "Point",
        "coordinates": [0, 0]
    }, {
        "type": "Polygon",
        "coordinates": [[[45, 45], [45, -45], [-45, -45], [-45, 45], [45,45]]]
    }]
}

正如GeoJSON规范中所说,a正好有一个成员
成员,即a(或
null

要素对象必须具有名为“几何体”的成员。几何体成员的值是上面定义的几何体对象或JSON空值

在可能的
几何图形
中,您确实可以使用,它必须具有成员
几何图形
。后者是其他几何图形的数组,即点、多边形等,甚至是另一个Geometry集合

几何图形集合必须具有名为“几何图形”的成员。与
“几何图形”
对应的值是一个数组。此数组中的每个元素都是GeoJSON几何体对象

因此,在您的情况下,您可以简单地执行以下操作:

var myRegions={
“类型”:“FeatureCollection”,
“特点”:[{
“类型”:“特征”,//单个特征
“属性”:{},
“几何体”:{//唯一几何体成员
“类型”:“GeometryCollection”,//几何体可以是GeometryCollection
“几何体”:[//唯一几何体成员
{//每个数组项都是一个几何体对象
“类型”:“点”,
“坐标”:[
61.34765625,
48.63290858589535
]
},
{
“类型”:“多边形”,
“坐标”:[
[
[
59.94140624999999,
50.65294336725709
],
//更多要点…
[
59.94140624999999,
50.65294336725709
]
]
]
}
]
}
}]
};

更新了JSFIDLE:

他妈的几秒钟前!:-)除此之外,只有
功能
预计具有
属性
…当然它不会损害具有
属性
GeometryCollection
,但传单不会阅读它们。?geometrycollection是一种功能,因此它必须具有
属性
成员,否则我对规范的解释是错误的。据我所知,geometrycollection是一种几何对象,如点、多边形等?好的,我指的是具有geometrycollection作为几何对象的featureobject必须具有属性。顺便说一句,要素对象规范是错误的,它声明它必须有一个
几何体
成员,如果该成员持有geometrycollection,则该成员称为
几何体
。仅供参考,我们链接的规范已经过时了。当前草稿可在此处找到:
{
    type: "FeatureCollection",
    features: [{
        "type": "Feature",
        "properties": {
            "value": "foo"
        },
        "geometry": {
            "type": "Point",
            "coordinates": [0,0]
        }
    }, {
        "type": "Feature",
        "properties": {
            "value": "bar"
        },
        "geometry": {
            "type": "Polygon",
            "coordinates": [[[45, 45], [45, -45], [-45, -45], [-45, 45], [45,45]]]
        }
    }]
}
{
    "type": "GeometryCollection",
    "properties": {
        "value": "foo"
    },
    "geometries": [{
        "type": "Point",
        "coordinates": [0, 0]
    }, {
        "type": "Polygon",
        "coordinates": [[[45, 45], [45, -45], [-45, -45], [-45, 45], [45,45]]]
    }]
}