diff --git a/.changeset/flat-stingrays-sell.md b/.changeset/flat-stingrays-sell.md new file mode 100644 index 0000000000..70b07c6e14 --- /dev/null +++ b/.changeset/flat-stingrays-sell.md @@ -0,0 +1,5 @@ +--- +'@antv/l7-map': patch +--- + +fix: map 事件属性丢失 diff --git a/packages/map/src/handler/events/event.ts b/packages/map/src/handler/events/event.ts index 4b9ee63982..cffa17bf63 100644 --- a/packages/map/src/handler/events/event.ts +++ b/packages/map/src/handler/events/event.ts @@ -1,9 +1,9 @@ -// tslint:disable-next-line:no-submodule-imports import { lodashUtil } from '@antv/l7-utils'; const { merge } = lodashUtil; + export class Event { public type: string; - constructor(type: string, data: any = {}) { + constructor(type: string, data = {}) { merge(this, data); this.type = type; } diff --git a/packages/map/src/handler/events/map_mouse_event.ts b/packages/map/src/handler/events/map_mouse_event.ts index b72d09d9df..40f1ce6998 100644 --- a/packages/map/src/handler/events/map_mouse_event.ts +++ b/packages/map/src/handler/events/map_mouse_event.ts @@ -1,13 +1,12 @@ // @ts-ignore // tslint:disable-next-line:no-submodule-imports -import { lodashUtil } from '@antv/l7-utils'; import type { EarthMap } from '../../earthmap'; import type LngLat from '../../geo/lng_lat'; import type Point from '../../geo/point'; import type { Map } from '../../map'; import DOM from '../../utils/dom'; import { Event } from './event'; -const { merge } = lodashUtil; + export default class MapMouseEvent extends Event { /** * `true` if `preventDefault` has been called. @@ -51,10 +50,14 @@ export default class MapMouseEvent extends Event { /** * @private */ - constructor(type: string, map: Map | EarthMap, originalEvent: MouseEvent, data: any = {}) { + constructor(type: string, map: Map | EarthMap, originalEvent: MouseEvent) { + super(type); const point = DOM.mousePos(map.getCanvasContainer(), originalEvent); const lngLat = map.unproject(point); - super(type, merge({ point, lngLat, originalEvent }, data)); + + this.point = point; + this.lngLat = lngLat; + this.originalEvent = originalEvent; this.defaultPrevented = false; this.target = map; } diff --git a/packages/map/src/handler/events/map_touch_event.ts b/packages/map/src/handler/events/map_touch_event.ts index af27df5b4f..6baeb3fa22 100644 --- a/packages/map/src/handler/events/map_touch_event.ts +++ b/packages/map/src/handler/events/map_touch_event.ts @@ -5,6 +5,7 @@ import Point from '../../geo/point'; import type { Map } from '../../map'; import DOM from '../../utils/dom'; import { Event } from './event'; + export default class MapTouchEvent extends Event { /** * The event type. @@ -55,6 +56,7 @@ export default class MapTouchEvent extends Event { * @private */ constructor(type: string, map: Map | EarthMap, originalEvent: TouchEvent) { + super(type); const touches = type === 'touchend' ? originalEvent.changedTouches : originalEvent.touches; const points = DOM.touchPos(map.getCanvasContainer(), touches); const lngLats = points.map((t: Point) => map.unproject(t)); @@ -65,7 +67,12 @@ export default class MapTouchEvent extends Event { new Point(0, 0), ); const lngLat = map.unproject(point); - super(type, { points, point, lngLats, lngLat, originalEvent }); + + this.points = points; + this.point = point; + this.lngLats = lngLats; + this.lngLat = lngLat; + this.originalEvent = originalEvent; this.defaultPrevented = false; } diff --git a/packages/map/src/handler/events/map_wheel_event.ts b/packages/map/src/handler/events/map_wheel_event.ts index cf26630ad9..03e8944fe8 100644 --- a/packages/map/src/handler/events/map_wheel_event.ts +++ b/packages/map/src/handler/events/map_wheel_event.ts @@ -29,7 +29,8 @@ export default class MapWheelEvent extends Event { * @private */ constructor(type: string, map: Map | EarthMap, originalEvent: WheelEvent) { - super(type, { originalEvent }); + super(type); + this.originalEvent = originalEvent; this.defaultPrevented = false; } diff --git a/packages/map/src/handler/events/render_event.ts b/packages/map/src/handler/events/render_event.ts index 75965e8a16..04f458bfc6 100644 --- a/packages/map/src/handler/events/render_event.ts +++ b/packages/map/src/handler/events/render_event.ts @@ -2,4 +2,9 @@ import { Event } from './event'; export default class RenderFrameEvent extends Event { public type: string = 'renderFrame'; public timeStamp: number; + + constructor(type: string, timeStamp: number) { + super(type); + this.timeStamp = timeStamp; + } } diff --git a/packages/map/src/handler/handler_manager.ts b/packages/map/src/handler/handler_manager.ts index ed9c9bbf5d..9e6a5244b1 100644 --- a/packages/map/src/handler/handler_manager.ts +++ b/packages/map/src/handler/handler_manager.ts @@ -319,7 +319,7 @@ class HandlerManager { this.frameId = this.map.requestRenderFrame((timeStamp: number) => { // @ts-ignore delete this.frameId; - this.handleEvent(new RenderFrameEvent('renderFrame', { timeStamp })); + this.handleEvent(new RenderFrameEvent('renderFrame', timeStamp)); this.applyChanges(); }); }