-
Notifications
You must be signed in to change notification settings - Fork 633
/
map_mouse_event.ts
69 lines (62 loc) · 1.58 KB
/
map_mouse_event.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// @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.
* @private
*/
public type:
| 'mousedown'
| 'mouseup'
| 'click'
| 'dblclick'
| 'mousemove'
| 'mouseover'
| 'mouseenter'
| 'mouseleave'
| 'mouseout'
| 'contextmenu';
/**
* The `Map` object that fired the event.
*/
public target: Map | EarthMap;
/**
* The DOM event which caused the map event.
*/
public originalEvent: MouseEvent;
/**
* The pixel coordinates of the mouse cursor, relative to the map and measured from the top left corner.
*/
public point: Point;
/**
* The geographic location on the map of the mouse cursor.
*/
public lngLat: LngLat;
public defaultPrevented: boolean;
/**
* @private
*/
constructor(
type: string,
map: Map | EarthMap,
originalEvent: MouseEvent,
data: any = {},
) {
const point = DOM.mousePos(map.getCanvasContainer(), originalEvent);
const lngLat = map.unproject(point);
super(type, merge({ point, lngLat, originalEvent }, data));
this.defaultPrevented = false;
this.target = map;
}
public preventDefault() {
this.defaultPrevented = true;
}
}