如何将绘制的特征添加到现有要素组并输出整体作为geojson?

时间:2015-11-04 12:52:37

标签: javascript leaflet mapbox

我有标准绘图控件,启用了标记。在draw:created

var lr = e.layer,
    latlng = lr.getLatLng(),
    coords = [];
coords.push(latlng['lng']);
coords.push(latlng['lat']);

lr['feature'] = {
    type: 'Feature',
    geometry: {
        type: 'Point',
        coordinates: coords
    },
    properties: {}
}

newFeatures.addLayer(lr);
active.addLayer(lr);
openPopup(lr);

在表单提交上,我将字符串化的geojson发送到服务器:

var geoJSON = active.getGeoJSON();
mapInput.val(JSON.stringify(geoJSON));

问题:
geoJSON中,虽然我在控制台中看到active图层,但没有新功能。我做错了什么?

1 个答案:

答案 0 :(得分:1)

你有点过于复杂。您使用的L.FeatureGroup会继承toGeoJSON中的L.LayerGroup方法,该方法会根据图层的当前内容返回FeatureCollection

  

返回图层组的GeoJSON表示(GeoJSON FeatureCollection)。

http://leafletjs.com/reference.html#layergroup-togeojson

var featureCollection;

var featureGroup = new L.FeatureGroup().addTo(map);

var drawControl = new L.Control.Draw({
    edit: {
        featureGroup: featureGroup
    }
}).addTo(map);

map.on('draw:created', function (e) {
    featureGroup.addLayer(e.layer);
    featureCollection = featureGroup.toGeoJSON();
});

这是关于Plunker的一个工作示例:http://embed.plnkr.co/Hfmxfy4iSEgc2Ncu7VJM/preview