【问题标题】:Add existing leaflet polygons to an existing leaflet layer将现有的传单多边形添加到现有的传单图层
【发布时间】:2016-11-02 09:14:16
【问题描述】:

我有一堆存储在数据库中的多边形。我想将它们添加到地图中,以便可以使用leaflet-draw 工具栏对其进行编辑。虽然,现在多边形已添加到地图中,但我无法对其进行编辑。

我认为这是因为它们没有添加到添加新绘制形状的layerGroup()

请帮忙。

【问题讨论】:

  • 解决了你的问题吗?
  • 非常感谢!

标签: javascript leaflet leaflet.draw


【解决方案1】:

您必须将多边形添加到要素组 drawnItems !比方说,

    var polyLayers = dbArray;

是您的带有多边形的数据库数组。首先使用您绘制的项目创建一个特征组:

    var drawnItems = new L.FeatureGroup();

并将其添加到地图中:

    map.addLayer(drawnItems);

然后,您只需从数据库中迭代多边形并将它们添加到drawedItems FeatureGroup

    for(layer of polyLayers) {
        drawnItems.addLayer(layer); 
    };

现在图层已添加到地图并可以编辑。

这里是EXAMPLE

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

    var polyLayers = [];

    var polygon1 = L.polygon([
        [51.509, -0.08],
        [51.503, -0.06],
        [51.51, -0.047]
    ]);
    polyLayers.push(polygon1)

    var polygon2 = L.polygon([
        [51.512642, -0.099993],
        [51.520387, -0.087633],
        [51.509116, -0.082483]
    ]);
    polyLayers.push(polygon2)

    // Add the layers to the drawnItems feature group 
    for(let layer of polyLayers) {
        drawnItems.addLayer(layer); 
    }

【讨论】:

  • 补充这个问题。我想将用户编辑的形状保存到数据库中。我应该在“draw:edited”事件中将 latlngs 与它们以前的值进行蛮力搜索,还是有更好的方法?
  • 不要在绘制编辑时执行此操作,而是draw:edited 启用或显示保存按钮,然后在单击保存时执行您的保存逻辑。我不费心比较我强制覆盖,但对于复杂的地图,你不想在每次更改时都这样做。我想您也可以使用去抖动例程...但是对于某些用户和更改保存到数据库的时间将比他们下一次编辑形状的时间更长。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 2015-06-11
  • 2011-09-27
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
相关资源
最近更新 更多