代码之家  ›  专栏  ›  技术社区  ›  ssten

设置底层更改传单绘制后的绘制选项

  •  0
  • ssten  · 技术社区  · 7 年前

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

    当我记录对象前后 设置绘图选项 它改变了。但我看不到已经绘制的多边形的变化。 当我画一个新的多边形时,它用新的颜色绘制。

    我在用传单0.7.x

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

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   treecon    7 年前

    我认为DrawControl的创建方式如下:

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

    如果是,则它不是映射对象的属性,并且在控制台中,您应该有如下错误:

    "map.drawControl is undefined"
    

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

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

    编辑: 现在你编辑了你的文章,很明显。您也希望已经绘制的多边形改变颜色。您创建的多边形托管在一个图层组或功能组中,我们称之为“drawnitems”。所以你要做的只是:

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

    下面是一个正在工作的jsiddle: https://jsfiddle.net/jt7wy4eg/2/ 当用户放大/缩小(多边形变为红色,甚至是绘制的多边形)时应用更改。

    推荐文章