@hzab/map-combine 0.3.1-alpha.1 → 0.4.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.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,10 @@
1
- # @hzab/map-combine1.0.0
1
+ # @hzab/map-combine@0.4.0
2
+
3
+ feat: 点聚合功能
4
+ fix: 高德地图 canvasTgeography 参数取值问题修复
5
+ fix: AMap、Openlayer、MinMap view-moveEnd 事件
6
+
7
+ # @hzab/map-combine@0.3.0
2
8
 
3
9
  fix: reactpoint 添加高德地图引擎并添加相应点线面绘制
4
10
  feat: 高德地图支持 ReactPoint
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/map-combine",
3
- "version": "0.3.1-alpha.1",
3
+ "version": "0.4.0-alpha.0",
4
4
  "description": "地图组件",
5
5
  "main": "src",
6
6
  "scripts": {
package/src/amap/AMap.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { MapCombine } from "../basic/MapCombine";
2
2
  import { PointOption, Point } from "../basic/Point";
3
+ import { PointAggregationOption, PointAggregation } from "../basic/PointAggregation";
3
4
  import { ReactPointOption, ReactPoint, drawReactPoint } from "../basic/ReactPoint";
4
5
  import { PolylineOption, Polyline } from "../basic/Polyline";
5
6
  import { PolygonOption, Polygon } from "../basic/Polygon";
@@ -174,6 +175,11 @@ export class AMap extends MapCombine {
174
175
  return e;
175
176
  }
176
177
 
178
+ createPointAggregation(option?: PointAggregationOption): PointAggregation {
179
+ const e = new PointAggregation(this, option);
180
+ return e;
181
+ }
182
+
177
183
  createReactPoint<K>(option?: Partial<ReactPointOption<K>>): ReactPoint<K> {
178
184
  const e = new ReactPoint(this, option);
179
185
  this.loadPromise.then(() => {
@@ -215,7 +221,7 @@ export class AMap extends MapCombine {
215
221
  }
216
222
  try {
217
223
  const lngLat = this.viewer.lngLatToContainer(p);
218
- return [lngLat.lng, lngLat.lat];
224
+ return [lngLat.x, lngLat.y];
219
225
  } catch (error) {
220
226
  console.error("canvasPixelToLngLat 转换出错:", error);
221
227
  return [];
@@ -16,6 +16,11 @@ export function bindEvent(map: AMap) {
16
16
  };
17
17
  frame();
18
18
 
19
+ viewer.on("moveend", (e) => {
20
+ event.trigger("view-moveEnd");
21
+ event.trigger("view-change");
22
+ });
23
+
19
24
  container.addEventListener("mousedown", (e) => {
20
25
  event.trigger("pointer-down");
21
26
  });
@@ -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
+ }