@hzab/map-combine 0.3.0-beta → 1.0.0-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.
@@ -1,186 +1,185 @@
1
- import { AMap } from "./AMap";
2
- import { Polyline } from "../basic/Polyline";
3
-
4
- export function drawPolyline(map: AMap, polyline: Polyline<unknown>) {
5
- const { event, viewer, LbsAMap } = map;
6
-
7
- let status = 0;
8
- let skip = 0;
9
- let target = null;
10
- let aMapPolylineEditor = null;
11
-
12
- const _event = {
13
- cursor: polyline.cursor,
14
- silent: polyline.silent,
15
- onPointerIn() {
16
- console.log("onPointerIn", status);
17
- status == 2 && polyline.event.trigger("pointer-in");
18
- },
19
- onPointerOut() {
20
- status == 2 && polyline.event.trigger("pointer-out");
21
- },
22
- onLClick() {
23
- status == 2 && polyline.event.trigger("left-click");
24
- },
25
- onRClick(e) {
26
- event.canvas = [e.pixel.x, e.pixel.y];
27
- if (polyline.menu) {
28
- map.menu.show(polyline.menu);
29
- }
30
- status == 2 && polyline.event.trigger("right-click");
31
- },
32
- onDbClick() {
33
- polyline.editable &&
34
- status == 2 &&
35
- setTimeout(() => {
36
- aMapPolylineEditor.setTarget(target);
37
- aMapPolylineEditor.open();
38
- polyline.event.trigger("start-edit");
39
- });
40
- },
41
- };
42
-
43
- const bindEvent = (graphical) => {
44
- graphical.on("click", _event.onLClick);
45
- graphical.on("rightclick", _event.onRClick);
46
- graphical.on("dblclick", _event.onDbClick);
47
- graphical.on("mouseover", _event.onPointerIn);
48
- graphical.on("mouseout", _event.onPointerOut);
49
- };
50
-
51
- aMapPolylineEditor = new LbsAMap.PolylineEditor(viewer, undefined, {
52
- createOptions: {
53
- strokeColor: polyline.stroke,
54
- strokeWeight: polyline.lineWidth,
55
- strokeStyle: polyline.dash ? "dashed" : "solid",
56
- strokeDasharray: [10, 10],
57
- },
58
- editOptions: {
59
- strokeColor: polyline.stroke,
60
- strokeWeight: polyline.lineWidth,
61
- strokeStyle: polyline.dash ? "dashed" : "solid",
62
- strokeDasharray: [10, 10],
63
- },
64
- });
65
-
66
- aMapPolylineEditor.on("add", (e) => {
67
- status = 3;
68
- target = e.target;
69
- bindEvent(target);
70
- // polygon.event.trigger("data-loaded");
71
- });
72
-
73
- if (polyline.coordinates) {
74
- status = 2;
75
- target = new LbsAMap.Polyline({
76
- path: polyline.coordinates,
77
- strokeColor: polyline.stroke,
78
- strokeWeight: polyline.lineWidth,
79
- strokeStyle: polyline.dash ? "dashed" : "solid",
80
- strokeDasharray: [10, 10],
81
- });
82
- viewer.add(target);
83
- bindEvent(target);
84
- } else {
85
- aMapPolylineEditor.close();
86
- aMapPolylineEditor.setTarget();
87
- aMapPolylineEditor.open();
88
- }
89
- const onUpdate = (e: Set<string>) => {
90
- if (skip) {
91
- skip--;
92
- return;
93
- }
94
-
95
- e.forEach((key) => {
96
- switch (key) {
97
- case "show":
98
- if (polyline.show) {
99
- target.show();
100
- } else {
101
- target.hide();
102
- }
103
- break;
104
- case "editable":
105
- break;
106
- case "coordinates":
107
- if (polyline.coordinates) {
108
- target.setPath(polyline.coordinates);
109
- target.setzIndex(polyline.coordinates[2]);
110
- target.show();
111
- status = 2;
112
- } else {
113
- target.hide();
114
- status = 0;
115
- }
116
- break;
117
-
118
- case "lineWidth":
119
- target.setOptions({
120
- strokeWeight: polyline.lineWidth,
121
- });
122
- break;
123
- case "stroke":
124
- target.setOptions({
125
- strokeColor: polyline.stroke,
126
- });
127
- break;
128
- case "dash":
129
- target.setOptions({
130
- strokeStyle: polyline.dash ? "dashed" : "solid",
131
- });
132
- break;
133
- default:
134
- throw new Error(`${key} 还不支持修改`);
135
- }
136
- });
137
- };
138
- const onDbClick = () => {
139
- switch (status) {
140
- case 1:
141
- status = 2;
142
- skip++;
143
- polyline.coordinates = target.getPath().map((item) => [item.lng, item.lat]);
144
- polyline.event.trigger("data-loaded");
145
- polyline.event.trigger("pointer-in");
146
- break;
147
- case 3:
148
- polyline.event.trigger("stop-edit");
149
- aMapPolylineEditor.setTarget();
150
- aMapPolylineEditor.close();
151
- break;
152
- }
153
- };
154
- const onStartEdit = () => {
155
- switch (status) {
156
- case 2:
157
- status = 3;
158
- break;
159
- }
160
- };
161
-
162
- const onStopEdit = () => {
163
- if (status == 3) {
164
- status = 2;
165
- skip++;
166
- polyline.coordinates = target.getPath().map((item) => [item.lng, item.lat]);
167
- }
168
- };
169
-
170
- const onDestroy = () => {
171
- viewer.remove(target);
172
- aMapPolylineEditor.close();
173
- aMapPolylineEditor.setTarget();
174
- event.off("double-click", onDbClick);
175
- polyline.event.off("update", onUpdate);
176
- polyline.event.off("start-edit", onStartEdit);
177
- polyline.event.off("stop-edit", onStopEdit);
178
- polyline.event.off("destroy", onDestroy);
179
- };
180
-
181
- event.on("double-click", onDbClick);
182
- polyline.event.on("update", onUpdate);
183
- polyline.event.on("start-edit", onStartEdit);
184
- polyline.event.on("stop-edit", onStopEdit);
185
- polyline.event.on("destroy", onDestroy);
186
- }
1
+ import { AMap } from "./AMap";
2
+ import { Polyline } from "../basic/Polyline";
3
+
4
+ export function drawPolyline(map: AMap, polyline: Polyline<unknown>) {
5
+ const { event, viewer, LbsAMap } = map;
6
+
7
+ let status = 0;
8
+ let skip = 0;
9
+ let target = null;
10
+ let aMapPolylineEditor = null;
11
+
12
+ const _event = {
13
+ cursor: polyline.cursor,
14
+ silent: polyline.silent,
15
+ onPointerIn() {
16
+ status == 2 && polyline.event.trigger("pointer-in");
17
+ },
18
+ onPointerOut() {
19
+ status == 2 && polyline.event.trigger("pointer-out");
20
+ },
21
+ onLClick() {
22
+ status == 2 && polyline.event.trigger("left-click");
23
+ },
24
+ onRClick(e) {
25
+ event.canvas = [e.pixel.x, e.pixel.y];
26
+ if (polyline.menu) {
27
+ map.menu.show(polyline.menu);
28
+ }
29
+ status == 2 && polyline.event.trigger("right-click");
30
+ },
31
+ onDbClick() {
32
+ polyline.editable &&
33
+ status == 2 &&
34
+ setTimeout(() => {
35
+ aMapPolylineEditor.setTarget(target);
36
+ aMapPolylineEditor.open();
37
+ polyline.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
+ aMapPolylineEditor = new LbsAMap.PolylineEditor(viewer, undefined, {
51
+ createOptions: {
52
+ strokeColor: polyline.stroke,
53
+ strokeWeight: polyline.lineWidth,
54
+ strokeStyle: polyline.dash ? "dashed" : "solid",
55
+ strokeDasharray: [10, 10],
56
+ },
57
+ editOptions: {
58
+ strokeColor: polyline.stroke,
59
+ strokeWeight: polyline.lineWidth,
60
+ strokeStyle: polyline.dash ? "dashed" : "solid",
61
+ strokeDasharray: [10, 10],
62
+ },
63
+ });
64
+
65
+ aMapPolylineEditor.on("add", (e) => {
66
+ status = 3;
67
+ target = e.target;
68
+ bindEvent(target);
69
+ // polygon.event.trigger("data-loaded");
70
+ });
71
+
72
+ if (polyline.coordinates) {
73
+ status = 2;
74
+ target = new LbsAMap.Polyline({
75
+ path: polyline.coordinates,
76
+ strokeColor: polyline.stroke,
77
+ strokeWeight: polyline.lineWidth,
78
+ strokeStyle: polyline.dash ? "dashed" : "solid",
79
+ strokeDasharray: [10, 10],
80
+ });
81
+ viewer.add(target);
82
+ bindEvent(target);
83
+ } else {
84
+ aMapPolylineEditor.close();
85
+ aMapPolylineEditor.setTarget();
86
+ aMapPolylineEditor.open();
87
+ }
88
+ const onUpdate = (e: Set<string>) => {
89
+ if (skip) {
90
+ skip--;
91
+ return;
92
+ }
93
+
94
+ e.forEach((key) => {
95
+ switch (key) {
96
+ case "show":
97
+ if (polyline.show) {
98
+ target.show();
99
+ } else {
100
+ target.hide();
101
+ }
102
+ break;
103
+ case "editable":
104
+ break;
105
+ case "coordinates":
106
+ if (polyline.coordinates) {
107
+ target.setPath(polyline.coordinates);
108
+ target.setzIndex(polyline.coordinates[2]);
109
+ target.show();
110
+ status = 2;
111
+ } else {
112
+ target.hide();
113
+ status = 0;
114
+ }
115
+ break;
116
+
117
+ case "lineWidth":
118
+ target.setOptions({
119
+ strokeWeight: polyline.lineWidth,
120
+ });
121
+ break;
122
+ case "stroke":
123
+ target.setOptions({
124
+ strokeColor: polyline.stroke,
125
+ });
126
+ break;
127
+ case "dash":
128
+ target.setOptions({
129
+ strokeStyle: polyline.dash ? "dashed" : "solid",
130
+ });
131
+ break;
132
+ default:
133
+ throw new Error(`${key} 还不支持修改`);
134
+ }
135
+ });
136
+ };
137
+ const onDbClick = () => {
138
+ switch (status) {
139
+ case 1:
140
+ status = 2;
141
+ skip++;
142
+ polyline.coordinates = target.getPath().map((item) => [item.lng, item.lat]);
143
+ polyline.event.trigger("data-loaded");
144
+ polyline.event.trigger("pointer-in");
145
+ break;
146
+ case 3:
147
+ polyline.event.trigger("stop-edit");
148
+ aMapPolylineEditor.setTarget();
149
+ aMapPolylineEditor.close();
150
+ break;
151
+ }
152
+ };
153
+ const onStartEdit = () => {
154
+ switch (status) {
155
+ case 2:
156
+ status = 3;
157
+ break;
158
+ }
159
+ };
160
+
161
+ const onStopEdit = () => {
162
+ if (status == 3) {
163
+ status = 2;
164
+ skip++;
165
+ polyline.coordinates = target.getPath().map((item) => [item.lng, item.lat]);
166
+ }
167
+ };
168
+
169
+ const onDestroy = () => {
170
+ viewer.remove(target);
171
+ aMapPolylineEditor.close();
172
+ aMapPolylineEditor.setTarget();
173
+ event.off("double-click", onDbClick);
174
+ polyline.event.off("update", onUpdate);
175
+ polyline.event.off("start-edit", onStartEdit);
176
+ polyline.event.off("stop-edit", onStopEdit);
177
+ polyline.event.off("destroy", onDestroy);
178
+ };
179
+
180
+ event.on("double-click", onDbClick);
181
+ polyline.event.on("update", onUpdate);
182
+ polyline.event.on("start-edit", onStartEdit);
183
+ polyline.event.on("stop-edit", onStopEdit);
184
+ polyline.event.on("destroy", onDestroy);
185
+ }
@@ -28,6 +28,8 @@ export abstract class MapCombine {
28
28
  abstract get zoom(): number;
29
29
  abstract set zoom(val);
30
30
 
31
+ loadPromise: Promise<this> = Promise.resolve(this);
32
+
31
33
  bussinesses = new Map<string, BasicBusiness<BasicBusinessOption>>();
32
34
 
33
35
  /** 地图是否存在 */