Leaflet FeatureCollection:LatLong未定义

时间:2016-10-08 12:02:22

标签: leaflet

我希望用PHP创建一个数据库请求的GeoJson实例。 我正在使用此包来创建实例: http://jmikola.github.io/geojson/api/class-GeoJson.Feature.FeatureCollection.html

我创建了FeatureCollection但是我收到了错误

“错误:无效的LatLng对象:(未定义,未定义)” 即使我的坐标是浮点数。 但是,坐标不是来自数组[,],而是作为数组内的Javascript对象{,},这可能是问题所在? 其次,我认为我在设置CRS时遇到问题。我可以在QGIS中成功创建GeoJSON,它出现在FeatureCollection的顶部,但是这个包在PHP中显示在最后。

我的功能集如下所示:

{
"type": "FeatureCollection",
    "features": [
        {
        "type": "Feature",
        "geometry": {
            "type": "MultiPoint",
            "coordinates": [
                 {...},
                 {...}
            ]
        },
        "properties": [
            {...},
            {...}
        ],
        "id": {
            "type": "name",
            "properties": {
                "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
                }
            }
        }
    ]
}

我希望有人可以提供帮助,因为我已经在论坛上拖网几个小时了!

干杯

1 个答案:

答案 0 :(得分:0)

是的,坐标和属性必须是数组,而不是对象。因此,您可以在尝试创建geoJSON之前对其进行转换,如下所示:

//loop through all your features
featureCollection.features.forEach(function(feature) {
    // first the coordinates in the geometry property
    feature.geometry.coordinates.forEach(function(coord, index) {
        feature.geometry.coordinates[index] = [coord.lat, coord.lng];
    });

    // then those in the properties
    feature.properties.forEach(function(prop, index) {
        feature.properties[index] = [prop.lat, prop.lng];
    });
});