目录

Drawing Layer

Drawing layer是一个绘图插件,用户可以使用鼠标在地图上绘制图形。例如,在地图上单击鼠标绘制点,或多次点击绘制一个多边形。Drawing layer绘制工具栏图标包括:小手、圆形、标记、多边形、折线和矩形。

鼠标操作绘制过程

绘图库使用

  1. 引入drawing.js文件。

    <script
         src="https://mapapi.cloud.huawei.com/mapjs/v1/api/js/drawing.js">
    </script>

  2. 调用drawing.DrawingManager(options)创建drawingManager对象。

    // 创建drawingManager对象
    drawingManager = new drawing.DrawingManager({});
    // 绑定到地图
    drawingManager.setMap(map , HWMapJsSDK);

  3. 传入DrawingManagerOptions初始化参数,修改控制器位置、设置绘图模式等。

    示例代码如下:
    “JavaScript”
    function initMap() {
      mapOptions.center = {lat: 41.04473887597426, lng: 28.956678750226562};
      mapOptions.zoom = 11;
      mapOptions.language = 'ENG';
      // mapOptions.sourceType = 'raster';
      map = new HWMapJsSDK.HWMap(document.getElementById('myMap'), mapOptions);
      map.setPinchRotate(false);
    
      const onComplete = (result, type) => { 
        if (type === drawableObjectTypes.hwObject) {
          console.log('onComplete: ', result.getInstance(), ", object type: ", result.getObjectType());
        } else {
          console.log('onComplete: ', result);
        }
      };
      const onChange = (result, type) => { 
        if (type === drawableObjectTypes.hwObject) {
          console.log('onChange: ', result.getInstance(), ", object type: ", result.getObjectType());
        } else {
          console.log('onChange: ', result);
        }
      };
    
      drawingManager = new drawing.DrawingManager({
          drawingMode: drawing.OverlayType.POINT,
          drawingControl: true,
          drawingControlOptions: {
              position: drawing.ControlPosition.TOP_RIGHT,
              drawingModes: [
                 drawing.OverlayType.POINT,
                 drawing.OverlayType.CIRCLE,
                 drawing.OverlayType.POLYGON,
                 drawing.OverlayType.LINE_STRING,
                 drawing.OverlayType.BOX,
          ],
        },
        markerOptions: {
          icon: {
            url: 'marker.png',
          },
    
        },
        circleOptions: {
           fillColor: '#ff000d',
           strokeColor: '#ff2',
           strokeWeight: 4,
           fillOpacity: 0.2,
           editable: true,
        },
        polygonOptions: {
           fillColor: '#33ff00',
           fillOpacity: 0.6,
           strokeColor: '#0217f7',
           strokeWeight: 6,
           editable: true,
        },
        polylineOptions: {
           strokeColor: '#ffc003',
           strokeWeight: 5,
           editable: true,
        },
        boxOptions: {
           fillColor: '#0066ff',
           strokeColor: '#0217f7',
           fillOpacity: 0.5,
           strokeWeight: 3,
           editable: true,
        },
        onComplete,
        onChange,
      });
    
      drawingManager.setMap(map , HWMapJsSDK);
    }
    “HTML”
    <div id="map"></div>
    <div id="container">
        <button id="btn-undo"></button>
    </div>
    “CSS”
    <style>
        body,
        html,
        * {
            padding: 0;
            margin: 0;
        }
    
        #demo {
            height: 100%;
            width: 100%;
        }
    
        #map {
            position: absolute;
            height: 100%;
            width: 100%;
        }
    </style