@hzab/map-combine 0.4.2-alpha.0 → 0.4.2-alpha.11

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 (37) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +5 -5
  3. package/src/amap/AMap.ts +313 -306
  4. package/src/amap/AMapEvent.ts +110 -54
  5. package/src/amap/AMapPoint.ts +140 -143
  6. package/src/amap/AMapPolygon.ts +214 -195
  7. package/src/amap/AMapPolyline.ts +199 -185
  8. package/src/basic/BasicBusiness.ts +5 -5
  9. package/src/basic/BasicModel.ts +49 -0
  10. package/src/basic/MapCombine.ts +4 -0
  11. package/src/basic/MapElement.ts +2 -1
  12. package/src/basic/MapEvent.ts +5 -0
  13. package/src/basic/Point.ts +1 -0
  14. package/src/basic/PointAggregation.tsx +23 -11
  15. package/src/basic/ReactPopup.tsx +3 -0
  16. package/src/cesium/CesiumEvent.ts +97 -84
  17. package/src/cesium/CesiumMap.ts +355 -347
  18. package/src/cesium/CesiumModel.ts +64 -0
  19. package/src/cesium/CesiumPoint.ts +3 -0
  20. package/src/cesium/CesiumPolygon.ts +2 -0
  21. package/src/cesium/CesiumPolyline.ts +185 -47
  22. package/src/cesium/CesiumTile3D.ts +222 -225
  23. package/src/mine/MineEvent.ts +70 -46
  24. package/src/mine/MineMap.ts +52 -1
  25. package/src/mine/MinePoint.ts +7 -1
  26. package/src/mine/MinePolygon.ts +6 -1
  27. package/src/mine/MinePolyline.ts +6 -1
  28. package/src/openlayer/OpenlayerEvent.ts +109 -87
  29. package/src/openlayer/OpenlayerMap.ts +287 -287
  30. package/src/openlayer/OpenlayerPoint.ts +6 -1
  31. package/src/openlayer/OpenlayerPolygon.ts +34 -24
  32. package/src/openlayer/OpenlayerPolyline.ts +10 -3
  33. package/src/utils/color.ts +49 -0
  34. package/src/utils/index.ts +3 -0
  35. package/src/utils/points-viewer.ts +27 -1
  36. package/src/utils/turfjs-utils.ts +52 -0
  37. package/src/utils/types.d.ts +12 -0
@@ -1,84 +1,97 @@
1
- import { CesiumMap } from "./CesiumMap";
2
-
3
- export function bindEvent(map: CesiumMap) {
4
- const { event, viewer, container } = map;
5
- viewer.camera.percentageChanged = 0.0001;
6
-
7
- viewer.scene.preRender.addEventListener(() => {
8
- event.trigger("view-preRender");
9
- });
10
-
11
- viewer.camera.changed.addEventListener(() => {
12
- event.trigger("view-change");
13
- });
14
- viewer.camera.moveEnd.addEventListener(() => {
15
- event.trigger("view-moveEnd");
16
- });
17
- const handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
18
- let target: any;
19
- handler.setInputAction((e: any) => {
20
- event.canvas = [e.endPosition.x, e.endPosition.y];
21
- event.geography = map.canvasTgeography(event.canvas);
22
- let _target: any = undefined;
23
- const res = viewer.scene.pick(e.endPosition);
24
- const a = res ? (res.id ? res.id : res.primitive ? res.primitive : undefined) : undefined;
25
-
26
- if (a && !a.silent) {
27
- _target = a;
28
- }
29
- if (_target !== target) {
30
- target?.onPointerOut?.();
31
- _target?.onPointerIn?.();
32
- target = _target;
33
- }
34
-
35
- if (target) {
36
- map.cursor = target.cursor;
37
- } else {
38
- map.cursor = "";
39
- }
40
- event.trigger("pointer-move");
41
- }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
42
-
43
- handler.setInputAction(() => {
44
- if (target) {
45
- target.onPointerDown?.();
46
- }
47
- event.trigger("pointer-down");
48
- }, Cesium.ScreenSpaceEventType.LEFT_DOWN);
49
-
50
- // 解决 ReactPoint 点击事件无法触发的问题
51
- container.addEventListener("click", () => {
52
- event.trigger("left-click");
53
- });
54
- container.addEventListener("pointerup", () => {
55
- if (target) {
56
- target.onPointerUp?.();
57
- }
58
- event.trigger("pointer-up");
59
- });
60
-
61
- handler.setInputAction((e) => {
62
- if (target) {
63
- target.onLClick?.();
64
- }
65
- event.trigger("left-click");
66
- }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
67
- handler.setInputAction(() => {
68
- if (target) {
69
- target.onRClick?.();
70
- }
71
- event.trigger("right-click");
72
- }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
73
-
74
- handler.setInputAction(() => {
75
- if (target) {
76
- target.onDbClick?.();
77
- }
78
- event.trigger("double-click");
79
- }, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
80
-
81
- event.on("destroy", () => {
82
- viewer.destroy();
83
- });
84
- }
1
+ import { CesiumMap } from "./CesiumMap";
2
+
3
+ export function bindEvent(map: CesiumMap) {
4
+ const { event, viewer, container } = map;
5
+ viewer.camera.percentageChanged = 0.0001;
6
+
7
+ viewer.scene.preRender.addEventListener(() => {
8
+ event.trigger("view-preRender");
9
+ map.bussinesses.forEach((e) => e.show && e.onFrame?.());
10
+ });
11
+
12
+ viewer.camera.changed.addEventListener(() => {
13
+ event.trigger("view-change");
14
+ });
15
+ viewer.camera.moveEnd.addEventListener(() => {
16
+ event.trigger("view-moveEnd");
17
+ });
18
+ const handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
19
+ let target: any;
20
+ handler.setInputAction((e: any) => {
21
+ event.canvas = [e.endPosition.x, e.endPosition.y];
22
+ event.geography = map.canvasTgeography(event.canvas);
23
+ let _target: any = undefined;
24
+ const res = viewer.scene.pick(e.endPosition);
25
+
26
+ const a = res ? (res.id ? res.id : res.primitive ? res.primitive : undefined) : undefined;
27
+
28
+ if (a && !a.silent) {
29
+ _target = a;
30
+ }
31
+ if (_target !== target) {
32
+ target?.onPointerOut?.();
33
+ _target?.onPointerIn?.();
34
+ target = _target;
35
+ }
36
+
37
+ if (target) {
38
+ map.cursor = target.cursor;
39
+ } else {
40
+ map.cursor = "";
41
+ }
42
+ event.trigger("pointer-move");
43
+ }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
44
+
45
+ handler.setInputAction(() => {
46
+ if (target) {
47
+ target.onPointerDown?.();
48
+ }
49
+ event.trigger("pointer-down");
50
+ }, Cesium.ScreenSpaceEventType.LEFT_DOWN);
51
+
52
+ // 解决 ReactPoint 点击事件无法触发的问题
53
+ container.addEventListener("click", () => {
54
+ event.trigger("left-click");
55
+ });
56
+ container.addEventListener("pointerup", () => {
57
+ if (target) {
58
+ target.onPointerUp?.();
59
+ }
60
+ event.trigger("pointer-up");
61
+ });
62
+
63
+ handler.setInputAction((e) => {
64
+ if (target) {
65
+ target.onLClick?.();
66
+ }
67
+ event.trigger("left-click");
68
+
69
+ // 穿透拾取,获取点击位置的所有对象
70
+ const pickedObjects = viewer.scene.drillPick(e.position);
71
+ if (pickedObjects && pickedObjects.length > 0) {
72
+ event.trigger("drill-pick", {
73
+ event: e,
74
+ pickedTargets: pickedObjects.map((it) => it.id?.target),
75
+ sourceObjects: pickedObjects,
76
+ position: e.position,
77
+ });
78
+ }
79
+ }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
80
+ handler.setInputAction(() => {
81
+ if (target) {
82
+ target.onRClick?.();
83
+ }
84
+ event.trigger("right-click");
85
+ }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
86
+
87
+ handler.setInputAction(() => {
88
+ if (target) {
89
+ target.onDbClick?.();
90
+ }
91
+ event.trigger("double-click");
92
+ }, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
93
+
94
+ event.on("destroy", () => {
95
+ viewer.destroy();
96
+ });
97
+ }