基本图层更改传单绘制后的setDrawingOptions

时间:2018-07-09 13:42:04

标签: javascript leaflet leaflet.draw

更改基层后,我正在尝试更改多边形的颜色。我用过setDrawingOptions,但无法使用...

当我在setDrawingOptions之前和之后记录对象时,它会更改。但是我看不到已经绘制的多边形的变化。 当我绘制新的多边形时,它会以新的颜色绘制。

我正在使用Leaflet 0.7.x

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

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

1 个答案:

答案 0 :(得分: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/ 用户放大/缩小时会应用更改(多边形变为红色,即使绘制的多边形也变为红色)。