@hzab/map-combine 0.4.0-alpha.0 → 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,46 +1,46 @@
1
- import { MineMap } from "./MineMap";
2
-
3
- export function bindEvent(map: MineMap) {
4
- const { event, viewer, container } = map;
5
-
6
- viewer.on("moveend", (e) => {
7
- event.trigger("view-moveEnd");
8
- });
9
-
10
- container.addEventListener("mousedown", (e) => {
11
- event.trigger("pointer-down");
12
- });
13
-
14
- container.addEventListener("mouseup", (e) => {
15
- event.trigger("pointer-up");
16
- });
17
-
18
- // 解决 ReactPoint 点击事件无法触发的问题
19
- container.addEventListener("click", (e) => {
20
- event.trigger("left-click");
21
- });
22
-
23
- viewer.on("mousemove", (e) => {
24
- event.canvas = [e.point.x, e.point.y];
25
- event.geography = [e.lngLat.lng, e.lngLat.lat, 0];
26
- });
27
- container.addEventListener("pointermove", (e) => {
28
- event.trigger("pointer-move");
29
- });
30
- viewer.on("move", () => {
31
- event.trigger("view-change");
32
- });
33
- viewer.on("mouseup", () => {
34
- event.trigger("pointer-up");
35
- });
36
- viewer.on("mousedown", () => {
37
- event.trigger("pointer-down");
38
- });
39
- viewer.on("click", () => {
40
- event.trigger("left-click");
41
- });
42
-
43
- event.on("destroy", () => {
44
- viewer.remove();
45
- });
46
- }
1
+ import { MineMap } from "./MineMap";
2
+
3
+ export function bindEvent(map: MineMap) {
4
+ const { event, viewer, container } = map;
5
+
6
+ viewer.on("moveend", (e) => {
7
+ event.trigger("view-moveEnd");
8
+ });
9
+
10
+ container.addEventListener("mousedown", (e) => {
11
+ event.trigger("pointer-down");
12
+ });
13
+
14
+ container.addEventListener("mouseup", (e) => {
15
+ event.trigger("pointer-up");
16
+ });
17
+
18
+ // 解决 ReactPoint 点击事件无法触发的问题
19
+ container.addEventListener("click", (e) => {
20
+ event.trigger("left-click");
21
+ });
22
+
23
+ viewer.on("mousemove", (e) => {
24
+ event.canvas = [e.point.x, e.point.y];
25
+ event.geography = [e.lngLat.lng, e.lngLat.lat, 0];
26
+ });
27
+ container.addEventListener("pointermove", (e) => {
28
+ event.trigger("pointer-move");
29
+ });
30
+ viewer.on("move", () => {
31
+ event.trigger("view-change");
32
+ });
33
+ viewer.on("mouseup", () => {
34
+ event.trigger("pointer-up");
35
+ });
36
+ viewer.on("mousedown", () => {
37
+ event.trigger("pointer-down");
38
+ });
39
+ viewer.on("click", () => {
40
+ event.trigger("left-click");
41
+ });
42
+
43
+ event.on("destroy", () => {
44
+ viewer.remove();
45
+ });
46
+ }
@@ -1,125 +1,125 @@
1
- import { MapCombine } from "../basic/MapCombine";
2
- import { PointOption, Point } from "../basic/Point";
3
- import { PointAggregationOption, PointAggregation } from "../basic/PointAggregation";
4
- import { PolygonOption, Polygon } from "../basic/Polygon";
5
- import { PolylineOption, Polyline } from "../basic/Polyline";
6
- import { Tile3DOption, Tile3D } from "../basic/Tile3D";
7
- import { bindEvent } from "./MineEvent";
8
- import { drawPoint } from "./MinePoint";
9
- import { drawPolygon } from "./MinePolygon";
10
- import { drawPolyline } from "./MinePolyline";
11
- import { drawTile3D } from "./MineTile3D";
12
-
13
- const MAX_ZOOM = 18;
14
-
15
- export class MineMap extends MapCombine {
16
- viewer: any;
17
- container: HTMLDivElement;
18
-
19
- get cursor(): string {
20
- return this.viewer.getCursor();
21
- }
22
- set cursor(val: string) {
23
- this.viewer.setCursor(val);
24
- }
25
-
26
- get moveable(): boolean {
27
- return this.viewer.dragPan.isEnabled();
28
- }
29
- set moveable(val: boolean) {
30
- val ? this.viewer.dragPan.enable() : this.viewer.dragPan.disable();
31
- }
32
- get center(): number[] {
33
- const p = this.viewer.getCenter();
34
- return [p.lng, p.lat];
35
- }
36
- set center(val: number[]) {
37
- this.viewer.setCenter(val);
38
- }
39
-
40
- get zoom(): number {
41
- return this.viewer.getZoom();
42
- }
43
- set zoom(val: number) {
44
- this.viewer.setZoom(val);
45
- }
46
-
47
- constructor(viewer: any) {
48
- super();
49
- this.viewer = viewer;
50
- this.container = viewer.getContainer();
51
- this.container.children.item(1).appendChild(this.htmllayer);
52
- this.cursor = "default";
53
- bindEvent(this);
54
- }
55
-
56
- canvasTgeography(p: number[]): number[] {
57
- const res = this.viewer.getTDSpaceCoord({ point: p, disableLayer: true });
58
- return [res.lngLat.lng, res.lngLat.lat, 0];
59
- }
60
- geographyTcanvas(p: number[]): number[] {
61
- const res = this.viewer.project([p[0], p[1]], p[2] ?? 0);
62
- return [res.x, res.y];
63
- }
64
-
65
- createPoint<K>(option?: Partial<PointOption<K>>): Point<K> {
66
- const e = new Point(this, option);
67
- drawPoint(this, e);
68
- return e;
69
- }
70
-
71
- createPointAggregation(option?: PointAggregationOption): PointAggregation {
72
- const e = new PointAggregation(this, option);
73
- return e;
74
- }
75
-
76
- createPolyline<K>(option?: Partial<PolylineOption<K>>): Polyline<K> {
77
- const e = new Polyline(this, option);
78
- drawPolyline(this, e);
79
- return e;
80
- }
81
- createPolygon<K>(option?: Partial<PolygonOption<K>>): Polygon<K> {
82
- const e = new Polygon(this, option);
83
- drawPolygon(this, e);
84
- return e;
85
- }
86
-
87
- /**
88
- * 所有点位移动至视口,调整位置及层级
89
- * @param points
90
- * @param opt
91
- * @param {Array<number> = [0,0,0,0]} opt.avoid 距离边框的内边距,顺序:上、下、左、右
92
- */
93
- flyToViewer(points, opt = { avoid: [0, 0, 0, 0], maxZoom: MAX_ZOOM }) {
94
- if (points?.length === 0) {
95
- return this.flyTo(points[0], opt);
96
- }
97
- const rectangle = this.getBounds(points, { canvas: this.viewer.getCanvas(), ...opt });
98
-
99
- // 设置地图视图,使用调整后的边界范围
100
- this.viewer.fitBounds(
101
- [
102
- [rectangle[0], rectangle[1]],
103
- [rectangle[2], rectangle[3]],
104
- ],
105
- {
106
- maxZoom: opt?.maxZoom ?? MAX_ZOOM,
107
- },
108
- );
109
- }
110
-
111
- /**
112
- * 移动点位到中心点
113
- * @param point
114
- */
115
- flyTo(point, opt = {}) {
116
- // 设置相机视角
117
- this.viewer.flyTo({ center: point, ...opt });
118
- }
119
-
120
- createTile3D(option?: Partial<Tile3DOption>): Tile3D {
121
- const e = new Tile3D(this, option);
122
- drawTile3D(this, e);
123
- return e;
124
- }
125
- }
1
+ import { MapCombine } from "../basic/MapCombine";
2
+ import { PointOption, Point } from "../basic/Point";
3
+ import { PointAggregationOption, PointAggregation } from "../basic/PointAggregation";
4
+ import { PolygonOption, Polygon } from "../basic/Polygon";
5
+ import { PolylineOption, Polyline } from "../basic/Polyline";
6
+ import { Tile3DOption, Tile3D } from "../basic/Tile3D";
7
+ import { bindEvent } from "./MineEvent";
8
+ import { drawPoint } from "./MinePoint";
9
+ import { drawPolygon } from "./MinePolygon";
10
+ import { drawPolyline } from "./MinePolyline";
11
+ import { drawTile3D } from "./MineTile3D";
12
+
13
+ const MAX_ZOOM = 18;
14
+
15
+ export class MineMap extends MapCombine {
16
+ viewer: any;
17
+ container: HTMLDivElement;
18
+
19
+ get cursor(): string {
20
+ return this.viewer.getCursor();
21
+ }
22
+ set cursor(val: string) {
23
+ this.viewer.setCursor(val);
24
+ }
25
+
26
+ get moveable(): boolean {
27
+ return this.viewer.dragPan.isEnabled();
28
+ }
29
+ set moveable(val: boolean) {
30
+ val ? this.viewer.dragPan.enable() : this.viewer.dragPan.disable();
31
+ }
32
+ get center(): number[] {
33
+ const p = this.viewer.getCenter();
34
+ return [p.lng, p.lat];
35
+ }
36
+ set center(val: number[]) {
37
+ this.viewer.setCenter(val);
38
+ }
39
+
40
+ get zoom(): number {
41
+ return this.viewer.getZoom();
42
+ }
43
+ set zoom(val: number) {
44
+ this.viewer.setZoom(val);
45
+ }
46
+
47
+ constructor(viewer: any) {
48
+ super();
49
+ this.viewer = viewer;
50
+ this.container = viewer.getContainer();
51
+ this.container.children.item(1).appendChild(this.htmllayer);
52
+ this.cursor = "default";
53
+ bindEvent(this);
54
+ }
55
+
56
+ canvasTgeography(p: number[]): number[] {
57
+ const res = this.viewer.getTDSpaceCoord({ point: p, disableLayer: true });
58
+ return [res.lngLat.lng, res.lngLat.lat, 0];
59
+ }
60
+ geographyTcanvas(p: number[]): number[] {
61
+ const res = this.viewer.project([p[0], p[1]], p[2] ?? 0);
62
+ return [res.x, res.y];
63
+ }
64
+
65
+ createPoint<K>(option?: Partial<PointOption<K>>): Point<K> {
66
+ const e = new Point(this, option);
67
+ drawPoint(this, e);
68
+ return e;
69
+ }
70
+
71
+ createPointAggregation(option?: PointAggregationOption): PointAggregation {
72
+ const e = new PointAggregation(this, option);
73
+ return e;
74
+ }
75
+
76
+ createPolyline<K>(option?: Partial<PolylineOption<K>>): Polyline<K> {
77
+ const e = new Polyline(this, option);
78
+ drawPolyline(this, e);
79
+ return e;
80
+ }
81
+ createPolygon<K>(option?: Partial<PolygonOption<K>>): Polygon<K> {
82
+ const e = new Polygon(this, option);
83
+ drawPolygon(this, e);
84
+ return e;
85
+ }
86
+
87
+ /**
88
+ * 所有点位移动至视口,调整位置及层级
89
+ * @param points
90
+ * @param opt
91
+ * @param {Array<number> = [0,0,0,0]} opt.avoid 距离边框的内边距,顺序:上、下、左、右
92
+ */
93
+ flyToViewer(points, opt = { avoid: [0, 0, 0, 0], maxZoom: MAX_ZOOM }) {
94
+ if (points?.length === 0) {
95
+ return this.flyTo(points[0], opt);
96
+ }
97
+ const rectangle = this.getBounds(points, { canvas: this.viewer.getCanvas(), ...opt });
98
+
99
+ // 设置地图视图,使用调整后的边界范围
100
+ this.viewer.fitBounds(
101
+ [
102
+ [rectangle[0], rectangle[1]],
103
+ [rectangle[2], rectangle[3]],
104
+ ],
105
+ {
106
+ maxZoom: opt?.maxZoom ?? MAX_ZOOM,
107
+ },
108
+ );
109
+ }
110
+
111
+ /**
112
+ * 移动点位到中心点
113
+ * @param point
114
+ */
115
+ flyTo(point, opt = {}) {
116
+ // 设置相机视角
117
+ this.viewer.flyTo({ center: point, ...opt });
118
+ }
119
+
120
+ createTile3D(option?: Partial<Tile3DOption>): Tile3D {
121
+ const e = new Tile3D(this, option);
122
+ drawTile3D(this, e);
123
+ return e;
124
+ }
125
+ }
@@ -1,87 +1,87 @@
1
- import { OpenlayerMap } from "./OpenlayerMap";
2
-
3
- export function bindEvent(map: OpenlayerMap) {
4
- const { event, viewer, container } = map;
5
- let target: any;
6
- let moving = false;
7
-
8
- const frame = () => {
9
- if (map.isAlive) {
10
- requestAnimationFrame(frame);
11
- event.trigger("view-preRender");
12
- }
13
- };
14
- frame();
15
-
16
- viewer.on("moveend", (e) => {
17
- event.trigger("view-moveEnd");
18
- });
19
-
20
- viewer.on("pointermove", (e) => {
21
- event.canvas = e.pixel;
22
- event.geography = map.canvasTgeography(event.canvas);
23
- let _target: any;
24
- if (moving) {
25
- event.trigger("pointer-move");
26
- return;
27
- }
28
- const res = viewer.getFeaturesAtPixel(event.canvas)[0];
29
- _target = res ? res.get("event") : undefined;
30
- if (_target?.silent) {
31
- _target = undefined;
32
- }
33
- if (_target !== target) {
34
- target?.onPointerOut?.();
35
- _target?.onPointerIn?.();
36
- target = _target;
37
- }
38
- event.trigger("pointer-move");
39
- });
40
-
41
- container.addEventListener("mousedown", () => {
42
- if (target) {
43
- moving = true;
44
- target.onPointerDown?.();
45
- }
46
- event.trigger("pointer-down");
47
- });
48
-
49
- container.addEventListener("mouseup", () => {
50
- if (target) {
51
- moving = false;
52
- target.onPointerUp?.();
53
- }
54
- event.trigger("pointer-up");
55
- });
56
-
57
- container.addEventListener("contextmenu", (e) => {
58
- e.preventDefault();
59
- if (target) {
60
- target.onRClick?.();
61
- }
62
- });
63
-
64
- viewer.on("click", () => {
65
- if (target) {
66
- target.onLClick?.();
67
- }
68
- event.trigger("left-click");
69
- });
70
-
71
- viewer.on("dblclick", () => {
72
- if (target) {
73
- target.onDbClick?.();
74
- }
75
- map.event.trigger("double-click");
76
- });
77
-
78
- let key = 0;
79
-
80
- viewer.on("precompose", () => {
81
- const _key = map.center.reduce((a, b) => a + b, map.zoom);
82
- if (key != _key) {
83
- key = _key;
84
- event.trigger("view-change");
85
- }
86
- });
87
- }
1
+ import { OpenlayerMap } from "./OpenlayerMap";
2
+
3
+ export function bindEvent(map: OpenlayerMap) {
4
+ const { event, viewer, container } = map;
5
+ let target: any;
6
+ let moving = false;
7
+
8
+ const frame = () => {
9
+ if (map.isAlive) {
10
+ requestAnimationFrame(frame);
11
+ event.trigger("view-preRender");
12
+ }
13
+ };
14
+ frame();
15
+
16
+ viewer.on("moveend", (e) => {
17
+ event.trigger("view-moveEnd");
18
+ });
19
+
20
+ viewer.on("pointermove", (e) => {
21
+ event.canvas = e.pixel;
22
+ event.geography = map.canvasTgeography(event.canvas);
23
+ let _target: any;
24
+ if (moving) {
25
+ event.trigger("pointer-move");
26
+ return;
27
+ }
28
+ const res = viewer.getFeaturesAtPixel(event.canvas)[0];
29
+ _target = res ? res.get("event") : undefined;
30
+ if (_target?.silent) {
31
+ _target = undefined;
32
+ }
33
+ if (_target !== target) {
34
+ target?.onPointerOut?.();
35
+ _target?.onPointerIn?.();
36
+ target = _target;
37
+ }
38
+ event.trigger("pointer-move");
39
+ });
40
+
41
+ container.addEventListener("mousedown", () => {
42
+ if (target) {
43
+ moving = true;
44
+ target.onPointerDown?.();
45
+ }
46
+ event.trigger("pointer-down");
47
+ });
48
+
49
+ container.addEventListener("mouseup", () => {
50
+ if (target) {
51
+ moving = false;
52
+ target.onPointerUp?.();
53
+ }
54
+ event.trigger("pointer-up");
55
+ });
56
+
57
+ container.addEventListener("contextmenu", (e) => {
58
+ e.preventDefault();
59
+ if (target) {
60
+ target.onRClick?.();
61
+ }
62
+ });
63
+
64
+ viewer.on("click", () => {
65
+ if (target) {
66
+ target.onLClick?.();
67
+ }
68
+ event.trigger("left-click");
69
+ });
70
+
71
+ viewer.on("dblclick", () => {
72
+ if (target) {
73
+ target.onDbClick?.();
74
+ }
75
+ map.event.trigger("double-click");
76
+ });
77
+
78
+ let key = 0;
79
+
80
+ viewer.on("precompose", () => {
81
+ const _key = map.center.reduce((a, b) => a + b, map.zoom);
82
+ if (key != _key) {
83
+ key = _key;
84
+ event.trigger("view-change");
85
+ }
86
+ });
87
+ }