@hzab/map-combine 0.4.2-alpha.1 → 0.4.2-alpha.12

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.
Files changed (41) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +5 -5
  3. package/src/amap/AMap.ts +318 -306
  4. package/src/amap/AMapEvent.ts +110 -54
  5. package/src/amap/AMapLayer.ts +241 -0
  6. package/src/amap/AMapPoint.ts +140 -143
  7. package/src/amap/AMapPolygon.ts +214 -195
  8. package/src/amap/AMapPolyline.ts +199 -185
  9. package/src/basic/BasicBusiness.ts +5 -5
  10. package/src/basic/BasicModel.ts +49 -0
  11. package/src/basic/Layer.ts +154 -0
  12. package/src/basic/MapCombine.ts +105 -98
  13. package/src/basic/MapElement.ts +2 -1
  14. package/src/basic/MapEvent.ts +5 -0
  15. package/src/basic/Point.ts +1 -0
  16. package/src/basic/PointAggregation.tsx +22 -11
  17. package/src/basic/ReactPopup.tsx +3 -0
  18. package/src/basic/Tile3D.ts +0 -1
  19. package/src/cesium/CesiumEvent.ts +97 -84
  20. package/src/cesium/CesiumLayer.ts +365 -0
  21. package/src/cesium/CesiumMap.ts +363 -347
  22. package/src/cesium/CesiumModel.ts +64 -0
  23. package/src/cesium/CesiumPoint.ts +3 -0
  24. package/src/cesium/CesiumPolygon.ts +2 -0
  25. package/src/cesium/CesiumPolyline.ts +185 -47
  26. package/src/cesium/CesiumTile3D.ts +222 -225
  27. package/src/mine/MineEvent.ts +70 -46
  28. package/src/mine/MineMap.ts +217 -125
  29. package/src/mine/MinePoint.ts +7 -1
  30. package/src/mine/MinePolygon.ts +6 -1
  31. package/src/mine/MinePolyline.ts +6 -1
  32. package/src/openlayer/OpenlayerEvent.ts +109 -87
  33. package/src/openlayer/OpenlayerMap.ts +33 -6
  34. package/src/openlayer/OpenlayerPoint.ts +6 -1
  35. package/src/openlayer/OpenlayerPolygon.ts +6 -1
  36. package/src/openlayer/OpenlayerPolyline.ts +8 -1
  37. package/src/utils/color.ts +49 -0
  38. package/src/utils/index.ts +3 -0
  39. package/src/utils/points-viewer.ts +27 -1
  40. package/src/utils/turfjs-utils.ts +52 -0
  41. package/src/utils/types.d.ts +12 -0
@@ -1,143 +1,140 @@
1
- import { Point } from "../basic/Point";
2
- import { AMap } from "./AMap";
3
-
4
- const RD = 0.017453292519943295;
5
-
6
- export function drawPoint(map: AMap, point: Point<unknown>) {
7
- const { viewer, event, LbsAMap } = map;
8
- let status = 0;
9
- let marker = null;
10
- const _event = {
11
- onPointerIn() {
12
- point.event.trigger("pointer-in");
13
- },
14
- onPointerOut() {
15
- point.event.trigger("pointer-out");
16
- },
17
- onLClick() {
18
- point.event.trigger("left-click");
19
- },
20
- onRClick(e) {
21
- event.canvas = [e.pixel.x, e.pixel.y];
22
- point.event.trigger("right-click");
23
- },
24
- onPointerDown() {
25
- if (point.editable && status == 2) {
26
- status = 3;
27
- map.moveable = false;
28
- }
29
- },
30
- onPointerUp() {
31
- if (point.editable && status == 3) {
32
- status = 2;
33
- map.moveable = true;
34
- point.coordinates = [event.geography[0], event.geography[1], point.height];
35
- point.event.trigger("data-update");
36
- }
37
- },
38
- };
39
-
40
- const bindEvent = (graphical) => {
41
- graphical.on("click", _event.onLClick);
42
- graphical.on("rightclick", _event.onRClick);
43
- graphical.on("mouseover", _event.onPointerIn);
44
- graphical.on("mouseout", _event.onPointerOut);
45
- };
46
-
47
- const darwMarker = (opt) => {
48
- marker = new LbsAMap.Marker({
49
- ...opt,
50
- title: point._option.name,
51
- icon: new LbsAMap.Icon({
52
- image: point.src,
53
- size: point.size,
54
- imageSize: point.size,
55
- }),
56
- angle: point.rotation * RD,
57
- anchor: point.center,
58
- draggable: point.editable,
59
- extData: {
60
- cursor: point.cursor,
61
- silent: point.silent,
62
- },
63
- });
64
- bindEvent(marker);
65
- viewer.add([marker]);
66
- };
67
-
68
- const eventMarker = (e) => {
69
- darwMarker({ position: new LbsAMap.LngLat(e.lnglat.lng, e.lnglat.lat) });
70
- viewer.off("click", eventMarker);
71
- };
72
-
73
- if (point.coordinates) {
74
- darwMarker({ position: new LbsAMap.LngLat(...point.coordinates) });
75
- } else {
76
- viewer.on("click", eventMarker);
77
- }
78
-
79
- const onUpdate = (e: Set<string>) => {
80
- const keys = new Set();
81
- e.forEach((key) => {
82
- switch (key) {
83
- case "show":
84
- if (status) {
85
- if (point.show) {
86
- marker.show();
87
- } else {
88
- marker.hide();
89
- }
90
- }
91
- break;
92
- case "editable":
93
- marker.setDraggable(point.editable);
94
- break;
95
- case "coordinates":
96
- if (point.coordinates) {
97
- marker.setPosition(point.coordinates);
98
- marker.setzIndex(point.coordinates[2]);
99
- marker.show();
100
- status = 2;
101
- } else {
102
- marker.hide();
103
- status = 0;
104
- }
105
- break;
106
- case "src":
107
- keys.add("icon");
108
- break;
109
- case "size":
110
- keys.add("icon");
111
- break;
112
- case "center":
113
- marker.setAnchor(point.center);
114
- break;
115
- case "rotation":
116
- marker.setAngle(point.rotation * RD);
117
- break;
118
- default:
119
- throw new Error(`${key} 还不支持修改`);
120
- }
121
- });
122
-
123
- keys.forEach((e) => {
124
- switch (e) {
125
- case "icon":
126
- marker.setIcon(
127
- new LbsAMap.Icon({
128
- image: point.src,
129
- size: point.size,
130
- imageSize: point.size,
131
- }),
132
- );
133
- break;
134
- }
135
- });
136
- };
137
-
138
- const onDestroy = () => {
139
- marker.remove();
140
- point.event.off("update", onUpdate);
141
- point.event.off("destroy", onDestroy);
142
- };
143
- }
1
+ import { Point } from "../basic/Point";
2
+ import { AMap } from "./AMap";
3
+
4
+ export function drawPoint(map: AMap, point: Point<unknown>) {
5
+ const { viewer, event, LbsAMap } = map;
6
+ let status = 0;
7
+ let skip = 0;
8
+
9
+ const { size, center } = point;
10
+ const pointOffset = [-size[0] * center[0], -size[1] * center[1]];
11
+ const marker = new LbsAMap.Marker({
12
+ position: new LbsAMap.LngLat(0, 0),
13
+ height: point.height,
14
+ title: point._option.name,
15
+ icon: new LbsAMap.Icon({
16
+ image: point.src,
17
+ size: point.size,
18
+ imageSize: point.size,
19
+ }),
20
+ angle: point.rotation,
21
+ anchor: point.center,
22
+ draggable: point.editable,
23
+ bubble: true,
24
+ extData: {
25
+ userdata: point.userdata,
26
+ cursor: point.cursor,
27
+ silent: point.silent,
28
+ target: point,
29
+ },
30
+ offset: pointOffset,
31
+ });
32
+ setIcon();
33
+ viewer.add([marker]);
34
+
35
+ if (point.coordinates) {
36
+ status = 2;
37
+ marker.setPosition(point.coordinates);
38
+ if (point.show) {
39
+ marker.show();
40
+ } else {
41
+ marker.hide();
42
+ }
43
+ }
44
+
45
+ const onMouseMove = () => {
46
+ switch (status) {
47
+ case 0:
48
+ status = 1;
49
+ marker.setPosition(event.geography);
50
+ if (point.show) {
51
+ marker.show();
52
+ } else {
53
+ marker.hide();
54
+ }
55
+ break;
56
+ case 1:
57
+ case 3:
58
+ marker.setPosition(event.geography);
59
+ break;
60
+ }
61
+ };
62
+
63
+ const onClick = () => {
64
+ if (status == 1) {
65
+ status = 2;
66
+ skip++;
67
+ point.coordinates = event.geography;
68
+ point.event.trigger("pointer-in");
69
+ }
70
+ };
71
+
72
+ const onUpdate = (e: Set<string>) => {
73
+ if (skip) {
74
+ skip--;
75
+ return;
76
+ }
77
+ e.forEach((key) => {
78
+ switch (key) {
79
+ case "show":
80
+ if (status) {
81
+ if (point.show) {
82
+ marker.show();
83
+ } else {
84
+ marker.hide();
85
+ }
86
+ }
87
+ break;
88
+ case "editable":
89
+ marker.setDraggable(point.editable);
90
+ break;
91
+ case "coordinates":
92
+ if (point.coordinates) {
93
+ marker.setPosition(point.coordinates);
94
+ marker.setzIndex(point.coordinates[2]);
95
+ marker.show();
96
+ status = 2;
97
+ } else {
98
+ marker.hide();
99
+ status = 0;
100
+ }
101
+ break;
102
+ case "src":
103
+ setIcon();
104
+ break;
105
+ case "size":
106
+ setIcon();
107
+ break;
108
+ case "center":
109
+ marker.setAnchor(point.center);
110
+ break;
111
+ case "rotation":
112
+ marker.setAngle(point.rotation);
113
+ break;
114
+ default:
115
+ throw new Error(`${key} 还不支持修改`);
116
+ }
117
+ });
118
+ };
119
+
120
+ function setIcon() {
121
+ marker.setIcon(
122
+ new LbsAMap.Icon({
123
+ image: point.src,
124
+ size: point.size,
125
+ imageSize: point.size,
126
+ }),
127
+ );
128
+ }
129
+
130
+ const onDestroy = () => {
131
+ marker.remove();
132
+ point.event.off("update", onUpdate);
133
+ point.event.off("destroy", onDestroy);
134
+ };
135
+
136
+ event.on("pointer-move", onMouseMove);
137
+ event.on("left-click", onClick);
138
+ point.event.on("update", onUpdate);
139
+ point.event.on("destroy", onDestroy);
140
+ }