【问题标题】:setDrawingOptions after baselayer change Leaflet Draw基础层更改后的 setDrawingOptions Leaflet Draw
【发布时间】:2018-07-09 13:42:04
【问题描述】:

在更改基础层后,我正在尝试更改多边形的颜色。我用过setDrawingOptions,但它不起作用...

当我在setDrawingOptions 之前和之后记录对象时,它会发生变化。但我没有看到已经绘制的多边形的变化。 当我绘制一个新多边形时,它会使用新颜色。

我正在使用 Leaflet 0.7.x

map.on('baselayerchange', function(){
  map.drawControl.setDrawingOptions({
    polygon: {
      shapeOptions: {
        color: "#fff"
      }
    }
  });
});

事件被触发。并且没有控制台错误

【问题讨论】:

    标签: javascript leaflet leaflet.draw


    【解决方案1】:

    我想 drawControl 是这样创建的:

    var drawControl = new L.Control.Draw();
    

    如果是,那么它不是地图对象的属性,并且在您的控制台中您应该有如下错误:

    "map.drawControl is undefined"
    

    请尝试以下代码(我只删除了“drawControl”之前的“map.”部分)

    map.on('baselayerchange', function(){
      drawControl.setDrawingOptions({
        polygon: {
          shapeOptions: {
            color: "#fff"
          }
        }
      });
    });
    

    编辑:现在您已经编辑了帖子,很清楚。您还希望已经绘制的多边形也改变颜色。您创建的多边形托管在 layerGroup 或 featureGroup 中,我们称之为“drawnItems”。所以你要做的很简单:

    map.on('baselayerchange', function(){
      drawControl.setDrawingOptions({
        polygon: {
          shapeOptions: {
            color: "#fff"
          }
        }
      });
    
      drawnItems.setStyle({
        color:"#fff"
      })
    });
    

    这是一个有效的 jsfiddle: https://jsfiddle.net/jt7wy4eg/2/ 当用户放大/缩小时应用更改(多边形变为红色,甚至绘制的多边形)。

    【讨论】:

    • drawControl 是这样创建的:`map.drawControl = new L.Control.Draw()`。并且没有控制台错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多