我有标准绘图控件,启用了标记。在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
图层,但没有新功能。我做错了什么?
答案 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