在MapBox中加载geoJson,以便使用Leaflet.Draw进行编辑

时间:2014-05-27 15:10:55

标签: leaflet geojson mapbox

我尝试在 Mapbox 中加载 geoJson 数据,并使用插件Leaflet.Draw

进行编辑

以下是一个示例:fiddle

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

var geojson = {
  "type": "FeatureCollection",
  "features": [ ...........  ]
}


L.geoJson(geojson).addTo(featureGroup);

当我点击编辑按钮时,我有一个错误:

  

未捕获的TypeError:无法读取属性'启用'未定义的

对象似乎可编辑,但我无法对其进行修改。

在地图框绘制图层中添加geojson对象的正确方法是什么?

3 个答案:

答案 0 :(得分:6)

我找到了解决方案:

L.geoJson(geojson, {
  onEachFeature: function (feature, layer) {
    featureGroup.addLayer(layer);
  }
});

答案 1 :(得分:3)

以下是使用CoffeeScript的工作示例:

drawnItems = new L.FeatureGroup()
map.addLayer drawnItems

layers = L.geoJson geojson
layers.eachLayer (layer) => drawnItems.addLayer layer

答案 2 :(得分:0)

我必须做以下事情让我的工作(除上述答案外):

L.geoJson(geojson, {
  onEachFeature: function (feature, layer) {
    if (layer.getLayers) {
      layer.getLayers().forEach(function (l) {
        featureGroup.addLayer(l);
      })
    } else {
      featureGroup.addLayer(layer);
    }
  }
});

这是针对“特征”类型的geojson。

相关问题