@hzab/map-combine 0.3.1-alpha.1 → 0.4.1

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.
@@ -1,49 +1,54 @@
1
- import { AMap } from "./AMap";
2
-
3
- /**
4
- * 高德地图事件
5
- * 高德地图 元素事件由各自元素处理
6
- * @param map
7
- */
8
- export function bindEvent(map: AMap) {
9
- const { event, viewer, container } = map;
10
-
11
- const frame = () => {
12
- if (map.isAlive) {
13
- requestAnimationFrame(frame);
14
- event.trigger("view-preRender");
15
- }
16
- };
17
- frame();
18
-
19
- container.addEventListener("mousedown", (e) => {
20
- event.trigger("pointer-down");
21
- });
22
-
23
- container.addEventListener("mouseup", (e) => {
24
- event.trigger("pointer-up");
25
- });
26
-
27
- // 解决 ReactPoint 点击事件无法触发的问题
28
- container.addEventListener("click", (e) => {
29
- event.trigger("left-click");
30
- });
31
-
32
- viewer.on("mousemove", (e) => {
33
- event.trigger("pointer-move");
34
- event.canvas = [e.pixel.x, e.pixel.y];
35
- event.geography = [e.lnglat.lng, e.lnglat.lat];
36
- });
37
-
38
- viewer.on("mapmove", () => {
39
- event.trigger("view-change");
40
- });
41
-
42
- viewer.on("click", (e) => {
43
- event.trigger("left-click");
44
- });
45
-
46
- viewer.on("dblclick", (e) => {
47
- map.event.trigger("double-click");
48
- });
49
- }
1
+ import { AMap } from "./AMap";
2
+
3
+ /**
4
+ * 高德地图事件
5
+ * 高德地图 元素事件由各自元素处理
6
+ * @param map
7
+ */
8
+ export function bindEvent(map: AMap) {
9
+ const { event, viewer, container } = map;
10
+
11
+ const frame = () => {
12
+ if (map.isAlive) {
13
+ requestAnimationFrame(frame);
14
+ event.trigger("view-preRender");
15
+ }
16
+ };
17
+ frame();
18
+
19
+ viewer.on("moveend", (e) => {
20
+ event.trigger("view-moveEnd");
21
+ event.trigger("view-change");
22
+ });
23
+
24
+ container.addEventListener("mousedown", (e) => {
25
+ event.trigger("pointer-down");
26
+ });
27
+
28
+ container.addEventListener("mouseup", (e) => {
29
+ event.trigger("pointer-up");
30
+ });
31
+
32
+ // 解决 ReactPoint 点击事件无法触发的问题
33
+ container.addEventListener("click", (e) => {
34
+ event.trigger("left-click");
35
+ });
36
+
37
+ viewer.on("mousemove", (e) => {
38
+ event.trigger("pointer-move");
39
+ event.canvas = [e.pixel.x, e.pixel.y];
40
+ event.geography = [e.lnglat.lng, e.lnglat.lat];
41
+ });
42
+
43
+ viewer.on("mapmove", () => {
44
+ event.trigger("view-change");
45
+ });
46
+
47
+ viewer.on("click", (e) => {
48
+ event.trigger("left-click");
49
+ });
50
+
51
+ viewer.on("dblclick", (e) => {
52
+ map.event.trigger("double-click");
53
+ });
54
+ }
@@ -1,195 +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
- 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
- }
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
+ }