多边形选择会改变颜色

时间:2017-07-10 21:50:33

标签: javascript mapbox-gl

有没有办法更改地图框绘制工具的默认颜色,我想绘制绿色的多边形而不是默认的橙色。

之类的东西

var draw = new MapboxDraw({ displayControlsDefault: false, controls: { polygon: true, trash: true } properties: { color: green } }); map.addControl(draw);

2 个答案:

答案 0 :(得分:2)

您可以添加样式参数,如下所示:

const mapDraw = new MapboxDraw({ styles: [
  // ACTIVE (being drawn)
  // polygon fill
  {
    "id": "gl-draw-polygon-fill",
    "type": "fill",
    "filter": \["all", \["==", "$type", "Polygon"\], \["!=", "mode", "static"\]\],
    "paint": {
      "fill-color": "#D20C0C",
      "fill-outline-color": "#D20C0C",
      "fill-opacity": 0.1
    }
  },
  // polygon outline stroke
  // This doesn't style the first edge of the polygon, which uses the line stroke styling instead
  {
    "id": "gl-draw-polygon-stroke-active",
    "type": "line",
    "filter": \["all", \["==", "$type", "Polygon"\], \["!=", "mode", "static"\]\],
    "layout": {
      "line-cap": "round",
      "line-join": "round"
    },
    "paint": {
      "line-color": "#D20C0C",
      "line-dasharray": \[0.2, 2\],
      "line-width": 3
    }
  },
  // vertex points
  {
    "id": "gl-draw-polygon-and-line-vertex-active",
    "type": "circle",
    "filter": \["all", \["==", "meta", "vertex"\], \["==", "$type", "Point"\], \["!=", "mode", "static"\]\],
    "paint": {
      "circle-radius": 3,
      "circle-color": "#D20C0C",
    }
  }
] })]

答案 1 :(得分:0)

只是为了澄清,如果你使用这个方法,并且想要绘制点和多边形,你必须定义它们;

const mapDraw = new MapboxDraw({
  displayControlsDefault: false,
  controls: {
    polygon: true,
    point: true,
    trash: true
  },
  styles: [{
      "id": "gl-draw-polygon-fill",
      "type": "fill",
      "paint": {
        "fill-color": "#0BD1C3",
        "fill-outline-color": "#D20C0C",
        "fill-opacity": 0.1
      }
    },
    //*** HERE YOU DEFINE POINT STYLE *** //
    {
      "id": "gl-draw-point",
      "type": "circle",
      "paint": {
        "circle-radius": 5,
        "circle-color": "#ff0202"
      }
    } //**********************************//
    ,
    {
      "id": "gl-draw-polygon-stroke-active",
      "type": "line",
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "paint": {
        "line-color": "#D20C0C",
        "line-dasharray": [0.2, 2],
        "line-width": 3
      }
    },
    {
      "id": "gl-draw-polygon-and-line-vertex-active",
      "type": "circle",
      "filter": ["all", ["==", "meta", "vertex"],
        ["==", "$type", "Point"],
        ["!=", "mode", "static"]
      ],
      "paint": {
        "circle-radius": 3,
        "circle-color": "#470CD1",
      }
    }
  ]
})
map.addControl(mapDraw);