@hzab/map-combine 0.3.0-beta → 0.3.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -1
- package/package.json +13 -4
- package/src/amap/AMap.ts +59 -7
- package/src/amap/AMapEvent.ts +8 -1
- package/src/amap/AMapPolygon.ts +195 -196
- package/src/amap/AMapPolyline.ts +185 -186
- package/src/basic/MapCombine.ts +2 -0
- package/src/basic/ReactPoint.tsx +363 -362
- package/src/cesium/CesiumEvent.ts +4 -0
- package/src/cesium/CesiumMap.ts +0 -1
- package/src/cesium/CesiumTile3D.ts +2 -6
- package/src/mine/MineEvent.ts +38 -25
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hzab/map-combine",
|
|
3
|
-
"version": "0.3.0
|
|
3
|
+
"version": "0.3.1-alpha.0",
|
|
4
4
|
"description": "地图组件",
|
|
5
5
|
"main": "src",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"dev": "npm run prepare && webpack serve -c ./config/webpack.config.js --env local",
|
|
8
8
|
"build": "webpack -c ./config/webpack.config.js --env production",
|
|
9
|
-
"
|
|
9
|
+
"version:alpha": "npm version prerelease --preid=alpha",
|
|
10
|
+
"publish:alpha": "npm publish --tag alpha",
|
|
11
|
+
"version:beta": "npm version prerelease --preid=beta",
|
|
12
|
+
"publish:beta": "npm publish --tag beta",
|
|
13
|
+
"version:patch": "npm version patch",
|
|
14
|
+
"version:minior": "npm version minor",
|
|
15
|
+
"version:major": "npm version major",
|
|
16
|
+
"publish:stable": "npm publish --access public",
|
|
10
17
|
"publish-patch": "npm version patch && npm publish --access public",
|
|
11
18
|
"publish-minor": "npm version minor && npm publish --access public",
|
|
12
19
|
"publish-major": "npm version major && npm publish --access public",
|
|
@@ -22,11 +29,11 @@
|
|
|
22
29
|
"author": "CaiYansong",
|
|
23
30
|
"license": "ISC",
|
|
24
31
|
"devDependencies": {
|
|
25
|
-
"ol": "^7.4.0",
|
|
26
32
|
"@amap/amap-jsapi-loader": "^1.0.1",
|
|
27
33
|
"@hzab/permissions": "0.1.1",
|
|
28
34
|
"@hzab/webpack-config": "^0.2.1",
|
|
29
35
|
"@turf/turf": "6.5",
|
|
36
|
+
"@types/amap-js-api": "^1.4.16",
|
|
30
37
|
"@types/react": "^17.0.62",
|
|
31
38
|
"@types/react-dom": "^17.0.20",
|
|
32
39
|
"antd": "^4.14.0",
|
|
@@ -36,6 +43,7 @@
|
|
|
36
43
|
"lil-gui": "^0.19.2",
|
|
37
44
|
"mobx": "^6.7.0",
|
|
38
45
|
"mobx-react": "^7.6.0",
|
|
46
|
+
"ol": "^7.4.0",
|
|
39
47
|
"react": "^17.0.2",
|
|
40
48
|
"react-dom": "^17.0.2",
|
|
41
49
|
"react-router-dom": "^6.14.1",
|
|
@@ -56,5 +64,6 @@
|
|
|
56
64
|
"**.{js,jsx,ts,tsx,css,scss,less,json,html}": [
|
|
57
65
|
"prettier --write"
|
|
58
66
|
]
|
|
59
|
-
}
|
|
67
|
+
},
|
|
68
|
+
"dependencies": {}
|
|
60
69
|
}
|
package/src/amap/AMap.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { drawPolyline } from "./AMapPolyline";
|
|
|
12
12
|
import { drawPolygon } from "./AMapPolygon";
|
|
13
13
|
|
|
14
14
|
export interface IAMapOption {
|
|
15
|
-
container;
|
|
15
|
+
container: HTMLDivElement;
|
|
16
16
|
url?: string | string[];
|
|
17
17
|
center?: number[];
|
|
18
18
|
zoom?: number;
|
|
@@ -26,6 +26,10 @@ export interface IAMapOption {
|
|
|
26
26
|
securityJsCode: string;
|
|
27
27
|
/** 加载的插件列表 */
|
|
28
28
|
plugins?: [string];
|
|
29
|
+
/** loader 配置参数 */
|
|
30
|
+
loaderOpt?: Object;
|
|
31
|
+
/** 地图初始化 配置参数 */
|
|
32
|
+
mapOpt?: Object;
|
|
29
33
|
}
|
|
30
34
|
|
|
31
35
|
export interface IFlyToViewerOpt {
|
|
@@ -37,17 +41,20 @@ export interface IFlyToViewerOpt {
|
|
|
37
41
|
* (Array<number> = [0,0,0,0]) 距离边框的内边距,顺序:上、下、左、右
|
|
38
42
|
*/
|
|
39
43
|
avoid?: [number, number, number, number];
|
|
44
|
+
/**
|
|
45
|
+
* 最大缩放级别
|
|
46
|
+
*/
|
|
47
|
+
maxZoom?: number;
|
|
40
48
|
}
|
|
41
49
|
|
|
42
50
|
export class AMap extends MapCombine {
|
|
43
|
-
loadPromise;
|
|
44
51
|
viewer: any;
|
|
45
|
-
container: HTMLDivElement;
|
|
46
|
-
option;
|
|
52
|
+
container: HTMLDivElement = null;
|
|
53
|
+
option: any = {};
|
|
47
54
|
offset: number[];
|
|
48
55
|
fov = 0.9272952180016121;
|
|
49
56
|
isFromLonLat = true;
|
|
50
|
-
LbsAMap;
|
|
57
|
+
LbsAMap: any;
|
|
51
58
|
get cursor(): string {
|
|
52
59
|
return this.container.style.cursor;
|
|
53
60
|
}
|
|
@@ -109,6 +116,7 @@ export class AMap extends MapCombine {
|
|
|
109
116
|
|
|
110
117
|
this.loadPromise = new Promise((resolve, reject) => {
|
|
111
118
|
AMapLoader({
|
|
119
|
+
...opt.loaderOpt,
|
|
112
120
|
key,
|
|
113
121
|
securityJsCode,
|
|
114
122
|
plugins,
|
|
@@ -117,6 +125,7 @@ export class AMap extends MapCombine {
|
|
|
117
125
|
this.LbsAMap = LbsAMap;
|
|
118
126
|
let _urls = Array.isArray(url) ? url : [url];
|
|
119
127
|
this.viewer = new LbsAMap.Map(container, {
|
|
128
|
+
...opt.mapOpt,
|
|
120
129
|
zoom: zoom || 14,
|
|
121
130
|
center: center || [120.160217, 30.243861],
|
|
122
131
|
doubleClickZoom: false,
|
|
@@ -139,11 +148,11 @@ export class AMap extends MapCombine {
|
|
|
139
148
|
: undefined,
|
|
140
149
|
});
|
|
141
150
|
this.viewer.on("complete", () => {
|
|
142
|
-
resolve(this
|
|
151
|
+
resolve(this);
|
|
143
152
|
});
|
|
144
153
|
|
|
145
154
|
this._initParamsEvent(this.viewer);
|
|
146
|
-
return this
|
|
155
|
+
return this;
|
|
147
156
|
})
|
|
148
157
|
.catch(reject);
|
|
149
158
|
});
|
|
@@ -243,7 +252,50 @@ export class AMap extends MapCombine {
|
|
|
243
252
|
opt?.immediately,
|
|
244
253
|
opt?.avoid,
|
|
245
254
|
);
|
|
255
|
+
|
|
256
|
+
var currentZoom = this.viewer.getZoom();
|
|
257
|
+
|
|
258
|
+
if (opt.maxZoom && currentZoom > opt.maxZoom) {
|
|
259
|
+
// 如果当前缩放级别超过限制,则手动设置回最大允许级别
|
|
260
|
+
this.viewer.setZoom(opt.maxZoom);
|
|
261
|
+
}
|
|
246
262
|
});
|
|
247
263
|
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* 将点集视野调整至容器内,支持相对边距(百分比)
|
|
267
|
+
* @param {number[][]} points - 经纬度数组 [[lng, lat], ...]
|
|
268
|
+
* @param {Object} opt
|
|
269
|
+
* @param {number[]} opt.avoid - 相对边距 [上, 下, 左, 右],取值范围 0~1,默认 [0,0,0,0]
|
|
270
|
+
* @param {boolean} opt.immediately - 是否立即跳转,默认 false(带动画)
|
|
271
|
+
*/
|
|
272
|
+
flyToViewerPercent(points: number[][], opt = { avoid: [0, 0, 0, 0], immediately: false }) {
|
|
273
|
+
if (!points?.length) return;
|
|
274
|
+
|
|
275
|
+
// 计算原始经纬度范围
|
|
276
|
+
let west = Infinity,
|
|
277
|
+
east = -Infinity,
|
|
278
|
+
south = Infinity,
|
|
279
|
+
north = -Infinity;
|
|
280
|
+
points.forEach(([lng, lat]) => {
|
|
281
|
+
west = Math.min(west, lng);
|
|
282
|
+
east = Math.max(east, lng);
|
|
283
|
+
south = Math.min(south, lat);
|
|
284
|
+
north = Math.max(north, lat);
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
// 应用相对边距
|
|
288
|
+
const [top, bottom, left, right] = opt.avoid;
|
|
289
|
+
const lngSpan = east - west;
|
|
290
|
+
const latSpan = north - south;
|
|
291
|
+
|
|
292
|
+
const bounds = this.LbsAMap.Bounds(
|
|
293
|
+
[west - lngSpan * left, south - latSpan * bottom],
|
|
294
|
+
[east + lngSpan * right, north + latSpan * top],
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
this.viewer.setBounds(bounds, opt.immediately);
|
|
298
|
+
}
|
|
299
|
+
|
|
248
300
|
flyTo() {}
|
|
249
301
|
}
|
package/src/amap/AMapEvent.ts
CHANGED
|
@@ -24,8 +24,15 @@ export function bindEvent(map: AMap) {
|
|
|
24
24
|
event.trigger("pointer-up");
|
|
25
25
|
});
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
// 解决 ReactPoint 点击事件无法触发的问题
|
|
28
|
+
container.addEventListener("click", (e) => {
|
|
29
|
+
event.trigger("left-click");
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
viewer.on("mousemove", (e) => {
|
|
28
33
|
event.trigger("pointer-move");
|
|
34
|
+
event.canvas = [e.pixel.x, e.pixel.y];
|
|
35
|
+
event.geography = [e.lnglat.lng, e.lnglat.lat];
|
|
29
36
|
});
|
|
30
37
|
|
|
31
38
|
viewer.on("mapmove", () => {
|
package/src/amap/AMapPolygon.ts
CHANGED
|
@@ -1,196 +1,195 @@
|
|
|
1
|
-
import { AMap } from "./AMap";
|
|
2
|
-
import { Polygon } from "../basic/Polygon";
|
|
3
|
-
|
|
4
|
-
export function drawPolygon(map: AMap, polygon: Polygon<unknown>) {
|
|
5
|
-
const { event, viewer, LbsAMap } = map;
|
|
6
|
-
|
|
7
|
-
let status = 0;
|
|
8
|
-
let skip = 0;
|
|
9
|
-
let target = null;
|
|
10
|
-
let aMapPolygonEditor = null;
|
|
11
|
-
|
|
12
|
-
const _event = {
|
|
13
|
-
cursor: polygon.cursor,
|
|
14
|
-
silent: polygon.silent,
|
|
15
|
-
onPointerIn() {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
aMapPolygonEditor.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
graphical.on("
|
|
45
|
-
graphical.on("
|
|
46
|
-
graphical.on("
|
|
47
|
-
graphical.on("
|
|
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
|
-
target
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
aMapPolygonEditor.
|
|
91
|
-
aMapPolygonEditor.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
target.
|
|
114
|
-
target.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
polygon.
|
|
154
|
-
polygon.event.trigger("
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
aMapPolygonEditor.
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
aMapPolygonEditor.
|
|
183
|
-
|
|
184
|
-
event.off("
|
|
185
|
-
polygon.event.off("
|
|
186
|
-
polygon.event.off("
|
|
187
|
-
polygon.event.off("
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
event.on("
|
|
192
|
-
polygon.event.on("
|
|
193
|
-
polygon.event.on("
|
|
194
|
-
polygon.event.on("
|
|
195
|
-
|
|
196
|
-
}
|
|
1
|
+
import { AMap } from "./AMap";
|
|
2
|
+
import { Polygon } from "../basic/Polygon";
|
|
3
|
+
|
|
4
|
+
export function drawPolygon(map: AMap, polygon: Polygon<unknown>) {
|
|
5
|
+
const { event, viewer, LbsAMap } = map;
|
|
6
|
+
|
|
7
|
+
let status = 0;
|
|
8
|
+
let skip = 0;
|
|
9
|
+
let target = null;
|
|
10
|
+
let aMapPolygonEditor = null;
|
|
11
|
+
|
|
12
|
+
const _event = {
|
|
13
|
+
cursor: polygon.cursor,
|
|
14
|
+
silent: polygon.silent,
|
|
15
|
+
onPointerIn() {
|
|
16
|
+
status == 2 && polygon.event.trigger("pointer-in");
|
|
17
|
+
},
|
|
18
|
+
onPointerOut() {
|
|
19
|
+
status == 2 && polygon.event.trigger("pointer-out");
|
|
20
|
+
},
|
|
21
|
+
onLClick() {
|
|
22
|
+
status == 2 && polygon.event.trigger("left-click");
|
|
23
|
+
},
|
|
24
|
+
onRClick(e) {
|
|
25
|
+
event.canvas = [e.pixel.x, e.pixel.y];
|
|
26
|
+
if (polygon.menu) {
|
|
27
|
+
map.menu.show(polygon.menu);
|
|
28
|
+
}
|
|
29
|
+
status == 2 && polygon.event.trigger("right-click");
|
|
30
|
+
},
|
|
31
|
+
onDbClick() {
|
|
32
|
+
polygon.editable &&
|
|
33
|
+
status == 2 &&
|
|
34
|
+
setTimeout(() => {
|
|
35
|
+
aMapPolygonEditor.setTarget(target);
|
|
36
|
+
aMapPolygonEditor.open();
|
|
37
|
+
polygon.event.trigger("start-edit");
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const bindEvent = (graphical) => {
|
|
43
|
+
graphical.on("click", _event.onLClick);
|
|
44
|
+
graphical.on("rightclick", _event.onRClick);
|
|
45
|
+
graphical.on("dblclick", _event.onDbClick);
|
|
46
|
+
graphical.on("mouseover", _event.onPointerIn);
|
|
47
|
+
graphical.on("mouseout", _event.onPointerOut);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
aMapPolygonEditor = new LbsAMap.PolygonEditor(viewer, undefined, {
|
|
51
|
+
createOptions: {
|
|
52
|
+
strokeColor: polygon.stroke,
|
|
53
|
+
strokeWeight: polygon.lineWidth,
|
|
54
|
+
fillOpacity: 0.4,
|
|
55
|
+
fillColor: polygon.fill,
|
|
56
|
+
strokeStyle: polygon.dash ? "dashed" : "solid",
|
|
57
|
+
strokeDasharray: [10, 10],
|
|
58
|
+
},
|
|
59
|
+
editOptions: {
|
|
60
|
+
strokeColor: polygon.stroke,
|
|
61
|
+
strokeWeight: polygon.lineWidth,
|
|
62
|
+
fillOpacity: 0.4,
|
|
63
|
+
fillColor: polygon.fill,
|
|
64
|
+
strokeStyle: polygon.dash ? "dashed" : "solid",
|
|
65
|
+
strokeDasharray: [10, 10],
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
aMapPolygonEditor.on("add", (e) => {
|
|
70
|
+
status = 3;
|
|
71
|
+
target = e.target;
|
|
72
|
+
bindEvent(target);
|
|
73
|
+
// polygon.event.trigger("data-loaded");
|
|
74
|
+
});
|
|
75
|
+
if (polygon.coordinates) {
|
|
76
|
+
status = 2;
|
|
77
|
+
target = new LbsAMap.Polygon({
|
|
78
|
+
path: polygon.coordinates,
|
|
79
|
+
strokeColor: polygon.stroke,
|
|
80
|
+
strokeWeight: polygon.lineWidth,
|
|
81
|
+
fillOpacity: 0.4,
|
|
82
|
+
fillColor: polygon.fill,
|
|
83
|
+
strokeStyle: polygon.dash ? "dashed" : "solid",
|
|
84
|
+
strokeDasharray: [10, 10],
|
|
85
|
+
});
|
|
86
|
+
viewer.add(target);
|
|
87
|
+
bindEvent(target);
|
|
88
|
+
} else {
|
|
89
|
+
aMapPolygonEditor.close();
|
|
90
|
+
aMapPolygonEditor.setTarget();
|
|
91
|
+
aMapPolygonEditor.open();
|
|
92
|
+
}
|
|
93
|
+
const onUpdate = (e: Set<string>) => {
|
|
94
|
+
if (skip) {
|
|
95
|
+
skip--;
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
e.forEach((key) => {
|
|
100
|
+
switch (key) {
|
|
101
|
+
case "show":
|
|
102
|
+
if (polygon.show) {
|
|
103
|
+
target.show();
|
|
104
|
+
} else {
|
|
105
|
+
target.hide();
|
|
106
|
+
}
|
|
107
|
+
break;
|
|
108
|
+
case "editable":
|
|
109
|
+
break;
|
|
110
|
+
case "coordinates":
|
|
111
|
+
if (polygon.coordinates) {
|
|
112
|
+
target.setPath(polygon.coordinates);
|
|
113
|
+
target.setzIndex(polygon.coordinates[2]);
|
|
114
|
+
target.show();
|
|
115
|
+
status = 2;
|
|
116
|
+
} else {
|
|
117
|
+
target.hide();
|
|
118
|
+
status = 0;
|
|
119
|
+
}
|
|
120
|
+
break;
|
|
121
|
+
|
|
122
|
+
case "lineWidth":
|
|
123
|
+
target.setOptions({
|
|
124
|
+
strokeWeight: polygon.lineWidth,
|
|
125
|
+
});
|
|
126
|
+
break;
|
|
127
|
+
case "fill":
|
|
128
|
+
target.setOptions({
|
|
129
|
+
fillColor: polygon.fill,
|
|
130
|
+
});
|
|
131
|
+
break;
|
|
132
|
+
case "stroke":
|
|
133
|
+
target.setOptions({
|
|
134
|
+
strokeColor: polygon.stroke,
|
|
135
|
+
});
|
|
136
|
+
break;
|
|
137
|
+
case "dash":
|
|
138
|
+
target.setOptions({
|
|
139
|
+
strokeStyle: polygon.dash ? "dashed" : "solid",
|
|
140
|
+
});
|
|
141
|
+
break;
|
|
142
|
+
default:
|
|
143
|
+
throw new Error(`${key} 还不支持修改`);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
const onDbClick = () => {
|
|
148
|
+
switch (status) {
|
|
149
|
+
case 1:
|
|
150
|
+
status = 2;
|
|
151
|
+
skip++;
|
|
152
|
+
polygon.coordinates = target.getPath().map((item) => [item.lng, item.lat]);
|
|
153
|
+
polygon.event.trigger("data-loaded");
|
|
154
|
+
polygon.event.trigger("pointer-in");
|
|
155
|
+
break;
|
|
156
|
+
case 3:
|
|
157
|
+
polygon.event.trigger("stop-edit");
|
|
158
|
+
aMapPolygonEditor.setTarget();
|
|
159
|
+
aMapPolygonEditor.close();
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
const onStartEdit = () => {
|
|
164
|
+
switch (status) {
|
|
165
|
+
case 2:
|
|
166
|
+
status = 3;
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
const onStopEdit = () => {
|
|
172
|
+
if (status == 3) {
|
|
173
|
+
status = 2;
|
|
174
|
+
skip++;
|
|
175
|
+
polygon.coordinates = target.getPath().map((item) => [item.lng, item.lat]);
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
const onDestroy = () => {
|
|
180
|
+
viewer.remove(target);
|
|
181
|
+
aMapPolygonEditor.close();
|
|
182
|
+
aMapPolygonEditor.setTarget();
|
|
183
|
+
event.off("double-click", onDbClick);
|
|
184
|
+
polygon.event.off("update", onUpdate);
|
|
185
|
+
polygon.event.off("start-edit", onStartEdit);
|
|
186
|
+
polygon.event.off("stop-edit", onStopEdit);
|
|
187
|
+
polygon.event.off("destroy", onDestroy);
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
event.on("double-click", onDbClick);
|
|
191
|
+
polygon.event.on("update", onUpdate);
|
|
192
|
+
polygon.event.on("start-edit", onStartEdit);
|
|
193
|
+
polygon.event.on("stop-edit", onStopEdit);
|
|
194
|
+
polygon.event.on("destroy", onDestroy);
|
|
195
|
+
}
|