riku
2023-07-11 47ab26baa9181304ef353768bf0d91f72ce769a3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import { map, AMap, mouseTool } from './baseMap';
 
var lastDrawEvent;
var polygonEditor;
 
export default {
  /**
   * 绘制一个多边形网格
   * @param {Array} sides 多边形边的坐标集合
   */
  drawPolygon(sides) {
    var path = sides;
    // 创建多边形 Polygon 实例
    var polygon = new AMap.Polygon({
      path: path,
      fillColor: '#fff', // 多边形填充颜色
      borderWeight: 2, // 线条宽度,默认为 1
      strokeColor: 'red' // 线条颜色
    });
    //多边形 Polygon对象添加到 Map
    map.add(polygon);
    // 缩放地图到合适的视野级别
    // map.setFitView([polygon]);
    return polygon;
  },
 
  /**
   * 鼠标绘制多边形
   */
  mouseDrawPolygon(onDraw) {
    if (lastDrawEvent != undefined) {
      mouseTool.off('draw', lastDrawEvent);
    }
    lastDrawEvent = (event) => {
      onDraw(event);
      mouseTool.close();
    };
    mouseTool.on('draw', lastDrawEvent);
    mouseTool.polygon({
      strokeColor: '#FF33FF',
      strokeOpacity: 1,
      strokeWeight: 6,
      fillColor: '#1791fc',
      fillOpacity: 0.4,
      // 线样式还支持 'dashed'
      strokeStyle: 'solid'
      // strokeStyle是dashed时有效
      // strokeDasharray: [30,10],
    });
  },
 
  /**
   * 开启多边形编辑
   * @param {Polygon} polygon 编辑对象
   * @param {Array} pList 需要吸附的多边形集合
   */
  openPolyGonEditor(polygon, pList) {
    if (polygonEditor == undefined) {
      polygonEditor = new AMap.PolygonEditor(map);
    }
    polygonEditor.setTarget(polygon);
    if (pList) polygonEditor.addAdsorbPolygons(pList);
    polygonEditor.open();
  },
 
  /**
   * 关闭多边形编辑
   */
  closePolyGonEditor() {
    polygonEditor.clearAdsorbPolygons();
    polygonEditor.close();
  }
};