@antv/l7-map 2.21.11-beta.5 → 2.21.11-beta.7
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.
- package/README.md +27 -6
- package/es/index.d.ts +3 -4
- package/es/index.js +2 -4
- package/es/map/camera.d.ts +690 -0
- package/es/map/camera.js +1138 -0
- package/{lib → es/map}/css/l7.css +41 -7
- package/es/map/events.d.ts +384 -0
- package/es/map/events.js +222 -0
- package/es/map/geo/edge_insets.d.ts +97 -0
- package/es/{geo → map/geo}/edge_insets.js +55 -33
- package/es/map/geo/lng_lat.d.ts +116 -0
- package/es/map/geo/lng_lat.js +159 -0
- package/es/map/geo/lng_lat_bounds.d.ts +217 -0
- package/es/map/geo/lng_lat_bounds.js +334 -0
- package/es/map/geo/mercator_coordinate.d.ts +113 -0
- package/es/map/geo/mercator_coordinate.js +142 -0
- package/es/map/geo/transform.d.ts +262 -0
- package/es/map/geo/transform.js +736 -0
- package/{lib → es/map}/handler/box_zoom.d.ts +30 -24
- package/es/map/handler/box_zoom.js +145 -0
- package/es/map/handler/click_zoom.d.ts +24 -0
- package/es/map/handler/click_zoom.js +47 -0
- package/es/map/handler/cooperative_gestures.d.ts +40 -0
- package/es/map/handler/cooperative_gestures.js +94 -0
- package/es/map/handler/drag_handler.d.ts +88 -0
- package/es/map/handler/drag_handler.js +89 -0
- package/es/map/handler/drag_move_state_manager.d.ts +30 -0
- package/es/map/handler/drag_move_state_manager.js +94 -0
- package/es/map/handler/handler_util.d.ts +3 -0
- package/es/{handler → map/handler}/handler_util.js +1 -2
- package/es/map/handler/keyboard.d.ts +88 -0
- package/es/map/handler/keyboard.js +197 -0
- package/es/map/handler/map_event.d.ts +46 -0
- package/es/map/handler/map_event.js +131 -0
- package/es/map/handler/mouse.d.ts +30 -0
- package/es/map/handler/mouse.js +85 -0
- package/es/map/handler/one_finger_touch_drag.d.ts +15 -0
- package/es/map/handler/one_finger_touch_drag.js +39 -0
- package/es/map/handler/scroll_zoom.d.ts +102 -0
- package/es/map/handler/scroll_zoom.js +312 -0
- package/es/{handler → map/handler}/shim/dblclick_zoom.d.ts +14 -10
- package/es/{handler → map/handler}/shim/dblclick_zoom.js +20 -16
- package/es/map/handler/shim/drag_pan.d.ts +79 -0
- package/es/map/handler/shim/drag_pan.js +77 -0
- package/es/{handler → map/handler}/shim/drag_rotate.d.ts +24 -16
- package/es/map/handler/shim/drag_rotate.js +66 -0
- package/es/map/handler/shim/two_fingers_touch.d.ts +74 -0
- package/es/map/handler/shim/two_fingers_touch.js +106 -0
- package/es/map/handler/tap_drag_zoom.d.ts +28 -0
- package/es/map/handler/tap_drag_zoom.js +92 -0
- package/es/map/handler/tap_recognizer.d.ts +35 -0
- package/es/map/handler/tap_recognizer.js +107 -0
- package/es/map/handler/tap_zoom.d.ts +28 -0
- package/es/map/handler/tap_zoom.js +87 -0
- package/es/map/handler/touch_pan.d.ts +40 -0
- package/es/map/handler/touch_pan.js +85 -0
- package/es/map/handler/transform-provider.d.ts +23 -0
- package/es/map/handler/transform-provider.js +35 -0
- package/es/map/handler/two_fingers_touch.d.ts +107 -0
- package/es/map/handler/two_fingers_touch.js +289 -0
- package/es/map/handler_inertia.d.ts +20 -0
- package/es/{handler → map}/handler_inertia.js +36 -50
- package/es/map/handler_manager.d.ts +154 -0
- package/es/map/handler_manager.js +466 -0
- package/es/map/map.d.ts +625 -0
- package/es/map/map.js +972 -0
- package/es/map/util/abort_error.d.ts +15 -0
- package/es/map/util/abort_error.js +21 -0
- package/es/map/util/browser.d.ts +10 -0
- package/es/map/util/browser.js +30 -0
- package/es/map/util/dom.d.ts +30 -0
- package/es/map/util/dom.js +105 -0
- package/es/map/util/evented.d.ts +75 -0
- package/es/map/util/evented.js +158 -0
- package/es/map/util/task_queue.d.ts +18 -0
- package/es/map/util/task_queue.js +54 -0
- package/es/map/util/util.d.ts +104 -0
- package/es/map/util/util.js +155 -0
- package/lib/index.d.ts +3 -4
- package/lib/index.js +12 -42
- package/lib/map/camera.d.ts +690 -0
- package/lib/map/camera.js +1145 -0
- package/{es → lib/map}/css/l7.css +41 -7
- package/lib/map/events.d.ts +384 -0
- package/lib/map/events.js +231 -0
- package/lib/map/geo/edge_insets.d.ts +97 -0
- package/lib/{geo → map/geo}/edge_insets.js +56 -35
- package/lib/map/geo/lng_lat.d.ts +116 -0
- package/lib/map/geo/lng_lat.js +166 -0
- package/lib/map/geo/lng_lat_bounds.d.ts +217 -0
- package/lib/map/geo/lng_lat_bounds.js +341 -0
- package/lib/map/geo/mercator_coordinate.d.ts +113 -0
- package/lib/map/geo/mercator_coordinate.js +157 -0
- package/lib/map/geo/transform.d.ts +262 -0
- package/lib/map/geo/transform.js +744 -0
- package/{es → lib/map}/handler/box_zoom.d.ts +30 -24
- package/lib/map/handler/box_zoom.js +153 -0
- package/lib/map/handler/click_zoom.d.ts +24 -0
- package/lib/map/handler/click_zoom.js +54 -0
- package/lib/map/handler/cooperative_gestures.d.ts +40 -0
- package/lib/map/handler/cooperative_gestures.js +101 -0
- package/lib/map/handler/drag_handler.d.ts +88 -0
- package/lib/map/handler/drag_handler.js +97 -0
- package/lib/map/handler/drag_move_state_manager.d.ts +30 -0
- package/lib/map/handler/drag_move_state_manager.js +103 -0
- package/lib/map/handler/handler_util.d.ts +3 -0
- package/lib/{handler → map/handler}/handler_util.js +1 -2
- package/lib/map/handler/keyboard.d.ts +88 -0
- package/lib/map/handler/keyboard.js +205 -0
- package/lib/map/handler/map_event.d.ts +46 -0
- package/lib/map/handler/map_event.js +140 -0
- package/lib/map/handler/mouse.d.ts +30 -0
- package/lib/map/handler/mouse.js +93 -0
- package/lib/map/handler/one_finger_touch_drag.d.ts +15 -0
- package/lib/map/handler/one_finger_touch_drag.js +47 -0
- package/lib/map/handler/scroll_zoom.d.ts +102 -0
- package/lib/map/handler/scroll_zoom.js +320 -0
- package/lib/{handler → map/handler}/shim/dblclick_zoom.d.ts +14 -10
- package/lib/{handler → map/handler}/shim/dblclick_zoom.js +21 -17
- package/lib/map/handler/shim/drag_pan.d.ts +79 -0
- package/lib/map/handler/shim/drag_pan.js +85 -0
- package/lib/{handler → map/handler}/shim/drag_rotate.d.ts +24 -16
- package/lib/map/handler/shim/drag_rotate.js +74 -0
- package/lib/map/handler/shim/two_fingers_touch.d.ts +74 -0
- package/lib/map/handler/shim/two_fingers_touch.js +114 -0
- package/lib/map/handler/tap_drag_zoom.d.ts +28 -0
- package/lib/map/handler/tap_drag_zoom.js +99 -0
- package/lib/map/handler/tap_recognizer.d.ts +35 -0
- package/lib/map/handler/tap_recognizer.js +116 -0
- package/lib/map/handler/tap_zoom.d.ts +28 -0
- package/lib/map/handler/tap_zoom.js +94 -0
- package/lib/map/handler/touch_pan.d.ts +40 -0
- package/lib/map/handler/touch_pan.js +92 -0
- package/lib/map/handler/transform-provider.d.ts +23 -0
- package/lib/map/handler/transform-provider.js +43 -0
- package/lib/map/handler/two_fingers_touch.d.ts +107 -0
- package/lib/map/handler/two_fingers_touch.js +296 -0
- package/lib/map/handler_inertia.d.ts +20 -0
- package/lib/{handler → map}/handler_inertia.js +38 -53
- package/lib/map/handler_manager.d.ts +154 -0
- package/lib/map/handler_manager.js +474 -0
- package/lib/map/map.d.ts +625 -0
- package/lib/map/map.js +979 -0
- package/lib/map/util/abort_error.d.ts +15 -0
- package/lib/map/util/abort_error.js +29 -0
- package/lib/map/util/browser.d.ts +10 -0
- package/lib/map/util/browser.js +36 -0
- package/lib/map/util/dom.d.ts +30 -0
- package/lib/map/util/dom.js +113 -0
- package/lib/map/util/evented.d.ts +75 -0
- package/lib/map/util/evented.js +167 -0
- package/lib/map/util/task_queue.d.ts +18 -0
- package/lib/map/util/task_queue.js +62 -0
- package/lib/map/util/util.d.ts +104 -0
- package/lib/map/util/util.js +171 -0
- package/package.json +6 -3
- package/es/camera.d.ts +0 -86
- package/es/camera.js +0 -639
- package/es/earthmap.d.ts +0 -69
- package/es/earthmap.js +0 -445
- package/es/geo/edge_insets.d.ts +0 -54
- package/es/geo/lng_lat.d.ts +0 -18
- package/es/geo/lng_lat.js +0 -59
- package/es/geo/lng_lat_bounds.d.ts +0 -25
- package/es/geo/lng_lat_bounds.js +0 -118
- package/es/geo/mercator.d.ts +0 -30
- package/es/geo/mercator.js +0 -72
- package/es/geo/point.d.ts +0 -40
- package/es/geo/point.js +0 -153
- package/es/geo/simple.d.ts +0 -30
- package/es/geo/simple.js +0 -75
- package/es/geo/transform.d.ts +0 -198
- package/es/geo/transform.js +0 -895
- package/es/handler/IHandler.d.ts +0 -34
- package/es/handler/IHandler.js +0 -1
- package/es/handler/blockable_map_event.d.ts +0 -17
- package/es/handler/blockable_map_event.js +0 -58
- package/es/handler/box_zoom.js +0 -162
- package/es/handler/click_zoom.d.ts +0 -16
- package/es/handler/click_zoom.js +0 -40
- package/es/handler/events/event.d.ts +0 -4
- package/es/handler/events/event.js +0 -12
- package/es/handler/events/index.d.ts +0 -4
- package/es/handler/events/index.js +0 -4
- package/es/handler/events/map_mouse_event.d.ts +0 -34
- package/es/handler/events/map_mouse_event.js +0 -45
- package/es/handler/events/map_touch_event.d.ts +0 -57
- package/es/handler/events/map_touch_event.js +0 -75
- package/es/handler/events/map_wheel_event.d.ts +0 -33
- package/es/handler/events/map_wheel_event.js +0 -33
- package/es/handler/events/render_event.d.ts +0 -6
- package/es/handler/events/render_event.js +0 -10
- package/es/handler/handler_inertia.d.ts +0 -23
- package/es/handler/handler_manager.d.ts +0 -61
- package/es/handler/handler_manager.js +0 -487
- package/es/handler/handler_util.d.ts +0 -4
- package/es/handler/keyboard.d.ts +0 -36
- package/es/handler/keyboard.js +0 -131
- package/es/handler/map_event.d.ts +0 -29
- package/es/handler/map_event.js +0 -89
- package/es/handler/mouse/index.d.ts +0 -4
- package/es/handler/mouse/index.js +0 -4
- package/es/handler/mouse/mouse_handler.d.ts +0 -22
- package/es/handler/mouse/mouse_handler.js +0 -99
- package/es/handler/mouse/mousepan_handler.d.ts +0 -10
- package/es/handler/mouse/mousepan_handler.js +0 -21
- package/es/handler/mouse/mousepitch_hander.d.ts +0 -9
- package/es/handler/mouse/mousepitch_hander.js +0 -24
- package/es/handler/mouse/mouserotate_hander.d.ts +0 -9
- package/es/handler/mouse/mouserotate_hander.js +0 -24
- package/es/handler/mouse/util.d.ts +0 -6
- package/es/handler/mouse/util.js +0 -12
- package/es/handler/scroll_zoom.d.ts +0 -93
- package/es/handler/scroll_zoom.js +0 -315
- package/es/handler/shim/drag_pan.d.ts +0 -61
- package/es/handler/shim/drag_pan.js +0 -75
- package/es/handler/shim/drag_rotate.js +0 -64
- package/es/handler/shim/touch_zoom_rotate.d.ts +0 -70
- package/es/handler/shim/touch_zoom_rotate.js +0 -104
- package/es/handler/tap/single_tap_recognizer.d.ts +0 -20
- package/es/handler/tap/single_tap_recognizer.js +0 -77
- package/es/handler/tap/tap_drag_zoom.d.ts +0 -22
- package/es/handler/tap/tap_drag_zoom.js +0 -89
- package/es/handler/tap/tap_recognizer.d.ts +0 -17
- package/es/handler/tap/tap_recognizer.js +0 -46
- package/es/handler/tap/tap_zoom.d.ts +0 -22
- package/es/handler/tap/tap_zoom.js +0 -81
- package/es/handler/touch/index.d.ts +0 -5
- package/es/handler/touch/index.js +0 -5
- package/es/handler/touch/touch_pan.d.ts +0 -30
- package/es/handler/touch/touch_pan.js +0 -91
- package/es/handler/touch/touch_pitch.d.ts +0 -13
- package/es/handler/touch/touch_pitch.js +0 -75
- package/es/handler/touch/touch_rotate.d.ts +0 -12
- package/es/handler/touch/touch_rotate.js +0 -57
- package/es/handler/touch/touch_zoom.d.ts +0 -12
- package/es/handler/touch/touch_zoom.js +0 -37
- package/es/handler/touch/two_touch.d.ts +0 -23
- package/es/handler/touch/two_touch.js +0 -98
- package/es/hash.d.ts +0 -14
- package/es/hash.js +0 -121
- package/es/interface.d.ts +0 -34
- package/es/interface.js +0 -1
- package/es/map.d.ts +0 -70
- package/es/map.js +0 -472
- package/es/util.d.ts +0 -25
- package/es/util.js +0 -70
- package/es/utils/Aabb.d.ts +0 -12
- package/es/utils/Aabb.js +0 -72
- package/es/utils/dom.d.ts +0 -4
- package/es/utils/dom.js +0 -117
- package/es/utils/performance.d.ts +0 -17
- package/es/utils/performance.js +0 -58
- package/es/utils/primitives.d.ts +0 -6
- package/es/utils/primitives.js +0 -37
- package/es/utils/task_queue.d.ts +0 -13
- package/es/utils/task_queue.js +0 -60
- package/lib/camera.d.ts +0 -86
- package/lib/camera.js +0 -648
- package/lib/earthmap.d.ts +0 -69
- package/lib/earthmap.js +0 -451
- package/lib/geo/edge_insets.d.ts +0 -54
- package/lib/geo/lng_lat.d.ts +0 -18
- package/lib/geo/lng_lat.js +0 -67
- package/lib/geo/lng_lat_bounds.d.ts +0 -25
- package/lib/geo/lng_lat_bounds.js +0 -126
- package/lib/geo/mercator.d.ts +0 -30
- package/lib/geo/mercator.js +0 -88
- package/lib/geo/point.d.ts +0 -40
- package/lib/geo/point.js +0 -161
- package/lib/geo/simple.d.ts +0 -30
- package/lib/geo/simple.js +0 -92
- package/lib/geo/transform.d.ts +0 -198
- package/lib/geo/transform.js +0 -906
- package/lib/handler/IHandler.d.ts +0 -34
- package/lib/handler/IHandler.js +0 -5
- package/lib/handler/blockable_map_event.d.ts +0 -17
- package/lib/handler/blockable_map_event.js +0 -66
- package/lib/handler/box_zoom.js +0 -168
- package/lib/handler/click_zoom.d.ts +0 -16
- package/lib/handler/click_zoom.js +0 -48
- package/lib/handler/events/event.d.ts +0 -4
- package/lib/handler/events/event.js +0 -20
- package/lib/handler/events/index.d.ts +0 -4
- package/lib/handler/events/index.js +0 -27
- package/lib/handler/events/map_mouse_event.d.ts +0 -34
- package/lib/handler/events/map_mouse_event.js +0 -53
- package/lib/handler/events/map_touch_event.d.ts +0 -57
- package/lib/handler/events/map_touch_event.js +0 -83
- package/lib/handler/events/map_wheel_event.d.ts +0 -33
- package/lib/handler/events/map_wheel_event.js +0 -41
- package/lib/handler/events/render_event.d.ts +0 -6
- package/lib/handler/events/render_event.js +0 -18
- package/lib/handler/handler_inertia.d.ts +0 -23
- package/lib/handler/handler_manager.d.ts +0 -61
- package/lib/handler/handler_manager.js +0 -495
- package/lib/handler/handler_util.d.ts +0 -4
- package/lib/handler/keyboard.d.ts +0 -36
- package/lib/handler/keyboard.js +0 -138
- package/lib/handler/map_event.d.ts +0 -29
- package/lib/handler/map_event.js +0 -97
- package/lib/handler/mouse/index.d.ts +0 -4
- package/lib/handler/mouse/index.js +0 -27
- package/lib/handler/mouse/mouse_handler.d.ts +0 -22
- package/lib/handler/mouse/mouse_handler.js +0 -107
- package/lib/handler/mouse/mousepan_handler.d.ts +0 -10
- package/lib/handler/mouse/mousepan_handler.js +0 -29
- package/lib/handler/mouse/mousepitch_hander.d.ts +0 -9
- package/lib/handler/mouse/mousepitch_hander.js +0 -32
- package/lib/handler/mouse/mouserotate_hander.d.ts +0 -9
- package/lib/handler/mouse/mouserotate_hander.js +0 -32
- package/lib/handler/mouse/util.d.ts +0 -6
- package/lib/handler/mouse/util.js +0 -19
- package/lib/handler/scroll_zoom.d.ts +0 -93
- package/lib/handler/scroll_zoom.js +0 -322
- package/lib/handler/shim/drag_pan.d.ts +0 -61
- package/lib/handler/shim/drag_pan.js +0 -83
- package/lib/handler/shim/drag_rotate.js +0 -72
- package/lib/handler/shim/touch_zoom_rotate.d.ts +0 -70
- package/lib/handler/shim/touch_zoom_rotate.js +0 -112
- package/lib/handler/tap/single_tap_recognizer.d.ts +0 -20
- package/lib/handler/tap/single_tap_recognizer.js +0 -86
- package/lib/handler/tap/tap_drag_zoom.d.ts +0 -22
- package/lib/handler/tap/tap_drag_zoom.js +0 -97
- package/lib/handler/tap/tap_recognizer.d.ts +0 -17
- package/lib/handler/tap/tap_recognizer.js +0 -56
- package/lib/handler/tap/tap_zoom.d.ts +0 -22
- package/lib/handler/tap/tap_zoom.js +0 -89
- package/lib/handler/touch/index.d.ts +0 -5
- package/lib/handler/touch/index.js +0 -34
- package/lib/handler/touch/touch_pan.d.ts +0 -30
- package/lib/handler/touch/touch_pan.js +0 -100
- package/lib/handler/touch/touch_pitch.d.ts +0 -13
- package/lib/handler/touch/touch_pitch.js +0 -83
- package/lib/handler/touch/touch_rotate.d.ts +0 -12
- package/lib/handler/touch/touch_rotate.js +0 -65
- package/lib/handler/touch/touch_zoom.d.ts +0 -12
- package/lib/handler/touch/touch_zoom.js +0 -45
- package/lib/handler/touch/two_touch.d.ts +0 -23
- package/lib/handler/touch/two_touch.js +0 -106
- package/lib/hash.d.ts +0 -14
- package/lib/hash.js +0 -129
- package/lib/interface.d.ts +0 -34
- package/lib/interface.js +0 -5
- package/lib/map.d.ts +0 -70
- package/lib/map.js +0 -478
- package/lib/util.d.ts +0 -25
- package/lib/util.js +0 -89
- package/lib/utils/Aabb.d.ts +0 -12
- package/lib/utils/Aabb.js +0 -80
- package/lib/utils/dom.d.ts +0 -4
- package/lib/utils/dom.js +0 -125
- package/lib/utils/performance.d.ts +0 -17
- package/lib/utils/performance.js +0 -64
- package/lib/utils/primitives.d.ts +0 -6
- package/lib/utils/primitives.js +0 -45
- package/lib/utils/task_queue.d.ts +0 -13
- package/lib/utils/task_queue.js +0 -67
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.TwoFingersTouchZoomHandler = exports.TwoFingersTouchRotateHandler = exports.TwoFingersTouchPitchHandler = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _dom = require("../util/dom");
|
|
10
|
+
/**
|
|
11
|
+
* An options object sent to the enable function of some of the handlers
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The `TwoFingersTouchHandler`s allows the user to zoom, pitch and rotate the map using two fingers
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
class TwoFingersTouchHandler {
|
|
19
|
+
/** @internal */
|
|
20
|
+
constructor() {
|
|
21
|
+
(0, _defineProperty2.default)(this, "_enabled", void 0);
|
|
22
|
+
(0, _defineProperty2.default)(this, "_active", void 0);
|
|
23
|
+
(0, _defineProperty2.default)(this, "_firstTwoTouches", void 0);
|
|
24
|
+
(0, _defineProperty2.default)(this, "_vector", void 0);
|
|
25
|
+
(0, _defineProperty2.default)(this, "_startVector", void 0);
|
|
26
|
+
(0, _defineProperty2.default)(this, "_aroundCenter", void 0);
|
|
27
|
+
this.reset();
|
|
28
|
+
}
|
|
29
|
+
reset() {
|
|
30
|
+
this._active = false;
|
|
31
|
+
delete this._firstTwoTouches;
|
|
32
|
+
}
|
|
33
|
+
touchstart(e, points, mapTouches) {
|
|
34
|
+
//log('touchstart', points, e.target.innerHTML, e.targetTouches.length ? e.targetTouches[0].target.innerHTML: undefined);
|
|
35
|
+
if (this._firstTwoTouches || mapTouches.length < 2) return;
|
|
36
|
+
this._firstTwoTouches = [mapTouches[0].identifier, mapTouches[1].identifier];
|
|
37
|
+
|
|
38
|
+
// implemented by child classes
|
|
39
|
+
this._start([points[0], points[1]]);
|
|
40
|
+
}
|
|
41
|
+
touchmove(e, points, mapTouches) {
|
|
42
|
+
if (!this._firstTwoTouches) return;
|
|
43
|
+
e.preventDefault();
|
|
44
|
+
const [idA, idB] = this._firstTwoTouches;
|
|
45
|
+
const a = getTouchById(mapTouches, points, idA);
|
|
46
|
+
const b = getTouchById(mapTouches, points, idB);
|
|
47
|
+
if (!a || !b) return;
|
|
48
|
+
const pinchAround = this._aroundCenter ? null : a.add(b).div(2);
|
|
49
|
+
|
|
50
|
+
// implemented by child classes
|
|
51
|
+
return this._move([a, b], pinchAround, e);
|
|
52
|
+
}
|
|
53
|
+
touchend(e, points, mapTouches) {
|
|
54
|
+
if (!this._firstTwoTouches) return;
|
|
55
|
+
const [idA, idB] = this._firstTwoTouches;
|
|
56
|
+
const a = getTouchById(mapTouches, points, idA);
|
|
57
|
+
const b = getTouchById(mapTouches, points, idB);
|
|
58
|
+
if (a && b) return;
|
|
59
|
+
if (this._active) _dom.DOM.suppressClick();
|
|
60
|
+
this.reset();
|
|
61
|
+
}
|
|
62
|
+
touchcancel() {
|
|
63
|
+
this.reset();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Enables the "drag to pitch" interaction.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* map.touchPitch.enable();
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
enable(options) {
|
|
75
|
+
this._enabled = true;
|
|
76
|
+
this._aroundCenter = !!options && options.around === 'center';
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Disables the "drag to pitch" interaction.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* map.touchPitch.disable();
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
disable() {
|
|
88
|
+
this._enabled = false;
|
|
89
|
+
this.reset();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Returns a Boolean indicating whether the "drag to pitch" interaction is enabled.
|
|
94
|
+
*
|
|
95
|
+
* @returns `true` if the "drag to pitch" interaction is enabled.
|
|
96
|
+
*/
|
|
97
|
+
isEnabled() {
|
|
98
|
+
return !!this._enabled;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Returns a Boolean indicating whether the "drag to pitch" interaction is active, i.e. currently being used.
|
|
103
|
+
*
|
|
104
|
+
* @returns `true` if the "drag to pitch" interaction is active.
|
|
105
|
+
*/
|
|
106
|
+
isActive() {
|
|
107
|
+
return !!this._active;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function getTouchById(mapTouches, points, identifier) {
|
|
111
|
+
for (let i = 0; i < mapTouches.length; i++) {
|
|
112
|
+
if (mapTouches[i].identifier === identifier) return points[i];
|
|
113
|
+
}
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* ZOOM */
|
|
118
|
+
|
|
119
|
+
const ZOOM_THRESHOLD = 0.1;
|
|
120
|
+
function getZoomDelta(distance, lastDistance) {
|
|
121
|
+
return Math.log(distance / lastDistance) / Math.LN2;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* The `TwoFingersTouchHandler`s allows the user to zoom the map two fingers
|
|
126
|
+
*
|
|
127
|
+
* @group Handlers
|
|
128
|
+
*/
|
|
129
|
+
class TwoFingersTouchZoomHandler extends TwoFingersTouchHandler {
|
|
130
|
+
constructor(...args) {
|
|
131
|
+
super(...args);
|
|
132
|
+
(0, _defineProperty2.default)(this, "_distance", void 0);
|
|
133
|
+
(0, _defineProperty2.default)(this, "_startDistance", void 0);
|
|
134
|
+
}
|
|
135
|
+
reset() {
|
|
136
|
+
super.reset();
|
|
137
|
+
delete this._distance;
|
|
138
|
+
delete this._startDistance;
|
|
139
|
+
}
|
|
140
|
+
_start(points) {
|
|
141
|
+
this._startDistance = this._distance = points[0].dist(points[1]);
|
|
142
|
+
}
|
|
143
|
+
_move(points, pinchAround) {
|
|
144
|
+
const lastDistance = this._distance;
|
|
145
|
+
this._distance = points[0].dist(points[1]);
|
|
146
|
+
if (!this._active && Math.abs(getZoomDelta(this._distance, this._startDistance)) < ZOOM_THRESHOLD) return;
|
|
147
|
+
this._active = true;
|
|
148
|
+
return {
|
|
149
|
+
zoomDelta: getZoomDelta(this._distance, lastDistance),
|
|
150
|
+
pinchAround
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/* ROTATE */
|
|
156
|
+
exports.TwoFingersTouchZoomHandler = TwoFingersTouchZoomHandler;
|
|
157
|
+
const ROTATION_THRESHOLD = 25; // pixels along circumference of touch circle
|
|
158
|
+
|
|
159
|
+
function getBearingDelta(a, b) {
|
|
160
|
+
return a.angleWith(b) * 180 / Math.PI;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* The `TwoFingersTouchHandler`s allows the user to rotate the map two fingers
|
|
165
|
+
*
|
|
166
|
+
* @group Handlers
|
|
167
|
+
*/
|
|
168
|
+
class TwoFingersTouchRotateHandler extends TwoFingersTouchHandler {
|
|
169
|
+
constructor(...args) {
|
|
170
|
+
super(...args);
|
|
171
|
+
(0, _defineProperty2.default)(this, "_minDiameter", void 0);
|
|
172
|
+
}
|
|
173
|
+
reset() {
|
|
174
|
+
super.reset();
|
|
175
|
+
delete this._minDiameter;
|
|
176
|
+
delete this._startVector;
|
|
177
|
+
delete this._vector;
|
|
178
|
+
}
|
|
179
|
+
_start(points) {
|
|
180
|
+
this._startVector = this._vector = points[0].sub(points[1]);
|
|
181
|
+
this._minDiameter = points[0].dist(points[1]);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
185
|
+
_move(points, pinchAround, _e) {
|
|
186
|
+
const lastVector = this._vector;
|
|
187
|
+
this._vector = points[0].sub(points[1]);
|
|
188
|
+
if (!this._active && this._isBelowThreshold(this._vector)) return;
|
|
189
|
+
this._active = true;
|
|
190
|
+
return {
|
|
191
|
+
bearingDelta: getBearingDelta(this._vector, lastVector),
|
|
192
|
+
pinchAround
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
_isBelowThreshold(vector) {
|
|
196
|
+
/*
|
|
197
|
+
* The threshold before a rotation actually happens is configured in
|
|
198
|
+
* pixels along the circumference of the circle formed by the two fingers.
|
|
199
|
+
* This makes the threshold in degrees larger when the fingers are close
|
|
200
|
+
* together and smaller when the fingers are far apart.
|
|
201
|
+
*
|
|
202
|
+
* Use the smallest diameter from the whole gesture to reduce sensitivity
|
|
203
|
+
* when pinching in and out.
|
|
204
|
+
*/
|
|
205
|
+
|
|
206
|
+
this._minDiameter = Math.min(this._minDiameter, vector.mag());
|
|
207
|
+
const circumference = Math.PI * this._minDiameter;
|
|
208
|
+
const threshold = ROTATION_THRESHOLD / circumference * 360;
|
|
209
|
+
const bearingDeltaSinceStart = getBearingDelta(vector, this._startVector);
|
|
210
|
+
return Math.abs(bearingDeltaSinceStart) < threshold;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/* PITCH */
|
|
215
|
+
exports.TwoFingersTouchRotateHandler = TwoFingersTouchRotateHandler;
|
|
216
|
+
function isVertical(vector) {
|
|
217
|
+
return Math.abs(vector.y) > Math.abs(vector.x);
|
|
218
|
+
}
|
|
219
|
+
const ALLOWED_SINGLE_TOUCH_TIME = 100;
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* The `TwoFingersTouchPitchHandler` allows the user to pitch the map by dragging up and down with two fingers.
|
|
223
|
+
*
|
|
224
|
+
* @group Handlers
|
|
225
|
+
*/
|
|
226
|
+
class TwoFingersTouchPitchHandler extends TwoFingersTouchHandler {
|
|
227
|
+
constructor(map) {
|
|
228
|
+
super();
|
|
229
|
+
(0, _defineProperty2.default)(this, "_valid", void 0);
|
|
230
|
+
(0, _defineProperty2.default)(this, "_firstMove", void 0);
|
|
231
|
+
(0, _defineProperty2.default)(this, "_lastPoints", void 0);
|
|
232
|
+
(0, _defineProperty2.default)(this, "_map", void 0);
|
|
233
|
+
(0, _defineProperty2.default)(this, "_currentTouchCount", 0);
|
|
234
|
+
this._map = map;
|
|
235
|
+
}
|
|
236
|
+
reset() {
|
|
237
|
+
super.reset();
|
|
238
|
+
this._valid = undefined;
|
|
239
|
+
delete this._firstMove;
|
|
240
|
+
delete this._lastPoints;
|
|
241
|
+
}
|
|
242
|
+
touchstart(e, points, mapTouches) {
|
|
243
|
+
super.touchstart(e, points, mapTouches);
|
|
244
|
+
this._currentTouchCount = mapTouches.length;
|
|
245
|
+
}
|
|
246
|
+
_start(points) {
|
|
247
|
+
this._lastPoints = points;
|
|
248
|
+
if (isVertical(points[0].sub(points[1]))) {
|
|
249
|
+
// fingers are more horizontal than vertical
|
|
250
|
+
this._valid = false;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
_move(points, center, e) {
|
|
254
|
+
// If cooperative gestures is enabled, we need a 3-finger minimum for this gesture to register
|
|
255
|
+
if (this._map.cooperativeGestures.isEnabled() && this._currentTouchCount < 3) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
const vectorA = points[0].sub(this._lastPoints[0]);
|
|
259
|
+
const vectorB = points[1].sub(this._lastPoints[1]);
|
|
260
|
+
this._valid = this.gestureBeginsVertically(vectorA, vectorB, e.timeStamp);
|
|
261
|
+
if (!this._valid) return;
|
|
262
|
+
this._lastPoints = points;
|
|
263
|
+
this._active = true;
|
|
264
|
+
const yDeltaAverage = (vectorA.y + vectorB.y) / 2;
|
|
265
|
+
const degreesPerPixelMoved = -0.5;
|
|
266
|
+
return {
|
|
267
|
+
pitchDelta: yDeltaAverage * degreesPerPixelMoved
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
gestureBeginsVertically(vectorA, vectorB, timeStamp) {
|
|
271
|
+
if (this._valid !== undefined) return this._valid;
|
|
272
|
+
const threshold = 2;
|
|
273
|
+
const movedA = vectorA.mag() >= threshold;
|
|
274
|
+
const movedB = vectorB.mag() >= threshold;
|
|
275
|
+
|
|
276
|
+
// neither finger has moved a meaningful amount, wait
|
|
277
|
+
if (!movedA && !movedB) return;
|
|
278
|
+
|
|
279
|
+
// One finger has moved and the other has not.
|
|
280
|
+
// If enough time has passed, decide it is not a pitch.
|
|
281
|
+
if (!movedA || !movedB) {
|
|
282
|
+
if (this._firstMove === undefined) {
|
|
283
|
+
this._firstMove = timeStamp;
|
|
284
|
+
}
|
|
285
|
+
if (timeStamp - this._firstMove < ALLOWED_SINGLE_TOUCH_TIME) {
|
|
286
|
+
// still waiting for a movement from the second finger
|
|
287
|
+
return undefined;
|
|
288
|
+
} else {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
const isSameDirection = vectorA.y > 0 === vectorB.y > 0;
|
|
293
|
+
return isVertical(vectorA) && isVertical(vectorB) && isSameDirection;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
exports.TwoFingersTouchPitchHandler = TwoFingersTouchPitchHandler;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { DragPanOptions } from './handler/shim/drag_pan';
|
|
2
|
+
import type { Map } from './map';
|
|
3
|
+
export type InertiaOptions = {
|
|
4
|
+
linearity: number;
|
|
5
|
+
easing: (t: number) => number;
|
|
6
|
+
deceleration: number;
|
|
7
|
+
maxSpeed: number;
|
|
8
|
+
};
|
|
9
|
+
export declare class HandlerInertia {
|
|
10
|
+
_map: Map;
|
|
11
|
+
_inertiaBuffer: Array<{
|
|
12
|
+
time: number;
|
|
13
|
+
settings: any;
|
|
14
|
+
}>;
|
|
15
|
+
constructor(map: Map);
|
|
16
|
+
clear(): void;
|
|
17
|
+
record(settings: any): void;
|
|
18
|
+
_drainInertiaBuffer(): void;
|
|
19
|
+
_onMoveEnd(panInertiaOptions?: DragPanOptions | boolean): any;
|
|
20
|
+
}
|
|
@@ -4,123 +4,108 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
7
|
+
exports.HandlerInertia = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var _util = require("
|
|
12
|
-
// @ts-ignore
|
|
13
|
-
|
|
14
|
-
// tslint:disable-next-line:no-submodule-imports
|
|
15
|
-
|
|
16
|
-
const {
|
|
17
|
-
merge
|
|
18
|
-
} = _l7Utils.lodashUtil;
|
|
9
|
+
var _pointGeometry = _interopRequireDefault(require("@mapbox/point-geometry"));
|
|
10
|
+
var _browser = require("./util/browser");
|
|
11
|
+
var _util = require("./util/util");
|
|
19
12
|
const defaultInertiaOptions = {
|
|
20
13
|
linearity: 0.3,
|
|
21
14
|
easing: (0, _util.bezier)(0, 0, 0.3, 1)
|
|
22
15
|
};
|
|
23
|
-
const defaultPanInertiaOptions =
|
|
16
|
+
const defaultPanInertiaOptions = (0, _util.extend)({
|
|
24
17
|
deceleration: 2500,
|
|
25
18
|
maxSpeed: 1400
|
|
26
19
|
}, defaultInertiaOptions);
|
|
27
|
-
const defaultZoomInertiaOptions =
|
|
20
|
+
const defaultZoomInertiaOptions = (0, _util.extend)({
|
|
28
21
|
deceleration: 20,
|
|
29
22
|
maxSpeed: 1400
|
|
30
23
|
}, defaultInertiaOptions);
|
|
31
|
-
const defaultBearingInertiaOptions =
|
|
24
|
+
const defaultBearingInertiaOptions = (0, _util.extend)({
|
|
32
25
|
deceleration: 1000,
|
|
33
26
|
maxSpeed: 360
|
|
34
27
|
}, defaultInertiaOptions);
|
|
35
|
-
const defaultPitchInertiaOptions =
|
|
28
|
+
const defaultPitchInertiaOptions = (0, _util.extend)({
|
|
36
29
|
deceleration: 1000,
|
|
37
30
|
maxSpeed: 90
|
|
38
31
|
}, defaultInertiaOptions);
|
|
39
32
|
class HandlerInertia {
|
|
40
33
|
constructor(map) {
|
|
41
|
-
(0, _defineProperty2.default)(this, "
|
|
42
|
-
(0, _defineProperty2.default)(this, "
|
|
43
|
-
this.
|
|
34
|
+
(0, _defineProperty2.default)(this, "_map", void 0);
|
|
35
|
+
(0, _defineProperty2.default)(this, "_inertiaBuffer", void 0);
|
|
36
|
+
this._map = map;
|
|
44
37
|
this.clear();
|
|
45
38
|
}
|
|
46
39
|
clear() {
|
|
47
|
-
this.
|
|
40
|
+
this._inertiaBuffer = [];
|
|
48
41
|
}
|
|
49
42
|
record(settings) {
|
|
50
|
-
this.
|
|
51
|
-
this.
|
|
52
|
-
time:
|
|
43
|
+
this._drainInertiaBuffer();
|
|
44
|
+
this._inertiaBuffer.push({
|
|
45
|
+
time: _browser.browser.now(),
|
|
53
46
|
settings
|
|
54
47
|
});
|
|
55
48
|
}
|
|
56
|
-
|
|
57
|
-
const inertia = this.
|
|
58
|
-
|
|
59
|
-
|
|
49
|
+
_drainInertiaBuffer() {
|
|
50
|
+
const inertia = this._inertiaBuffer,
|
|
51
|
+
now = _browser.browser.now(),
|
|
52
|
+
cutoff = 160; //msec
|
|
60
53
|
|
|
61
|
-
while (inertia.length > 0 &&
|
|
62
|
-
inertia.shift();
|
|
63
|
-
}
|
|
54
|
+
while (inertia.length > 0 && now - inertia[0].time > cutoff) inertia.shift();
|
|
64
55
|
}
|
|
65
|
-
|
|
66
|
-
this.
|
|
67
|
-
if (this.
|
|
56
|
+
_onMoveEnd(panInertiaOptions) {
|
|
57
|
+
this._drainInertiaBuffer();
|
|
58
|
+
if (this._inertiaBuffer.length < 2) {
|
|
68
59
|
return;
|
|
69
60
|
}
|
|
70
61
|
const deltas = {
|
|
71
62
|
zoom: 0,
|
|
72
63
|
bearing: 0,
|
|
73
64
|
pitch: 0,
|
|
74
|
-
pan: new
|
|
65
|
+
pan: new _pointGeometry.default(0, 0),
|
|
75
66
|
pinchAround: undefined,
|
|
76
67
|
around: undefined
|
|
77
68
|
};
|
|
78
69
|
for (const {
|
|
79
70
|
settings
|
|
80
|
-
} of this.
|
|
71
|
+
} of this._inertiaBuffer) {
|
|
81
72
|
deltas.zoom += settings.zoomDelta || 0;
|
|
82
73
|
deltas.bearing += settings.bearingDelta || 0;
|
|
83
74
|
deltas.pitch += settings.pitchDelta || 0;
|
|
84
|
-
if (settings.panDelta)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
if (settings.around) {
|
|
88
|
-
deltas.around = settings.around;
|
|
89
|
-
}
|
|
90
|
-
if (settings.pinchAround) {
|
|
91
|
-
deltas.pinchAround = settings.pinchAround;
|
|
92
|
-
}
|
|
75
|
+
if (settings.panDelta) deltas.pan._add(settings.panDelta);
|
|
76
|
+
if (settings.around) deltas.around = settings.around;
|
|
77
|
+
if (settings.pinchAround) deltas.pinchAround = settings.pinchAround;
|
|
93
78
|
}
|
|
94
|
-
const lastEntry = this.
|
|
95
|
-
const duration = lastEntry.time - this.
|
|
79
|
+
const lastEntry = this._inertiaBuffer[this._inertiaBuffer.length - 1];
|
|
80
|
+
const duration = lastEntry.time - this._inertiaBuffer[0].time;
|
|
96
81
|
const easeOptions = {};
|
|
97
82
|
if (deltas.pan.mag()) {
|
|
98
|
-
const result = calculateEasing(deltas.pan.mag(), duration,
|
|
83
|
+
const result = calculateEasing(deltas.pan.mag(), duration, (0, _util.extend)({}, defaultPanInertiaOptions, panInertiaOptions || {}));
|
|
99
84
|
easeOptions.offset = deltas.pan.mult(result.amount / deltas.pan.mag());
|
|
100
|
-
easeOptions.center = this.
|
|
85
|
+
easeOptions.center = this._map.transform.center;
|
|
101
86
|
extendDuration(easeOptions, result);
|
|
102
87
|
}
|
|
103
88
|
if (deltas.zoom) {
|
|
104
89
|
const result = calculateEasing(deltas.zoom, duration, defaultZoomInertiaOptions);
|
|
105
|
-
easeOptions.zoom = this.
|
|
90
|
+
easeOptions.zoom = this._map.transform.zoom + result.amount;
|
|
106
91
|
extendDuration(easeOptions, result);
|
|
107
92
|
}
|
|
108
93
|
if (deltas.bearing) {
|
|
109
94
|
const result = calculateEasing(deltas.bearing, duration, defaultBearingInertiaOptions);
|
|
110
|
-
easeOptions.bearing = this.
|
|
95
|
+
easeOptions.bearing = this._map.transform.bearing + (0, _util.clamp)(result.amount, -179, 179);
|
|
111
96
|
extendDuration(easeOptions, result);
|
|
112
97
|
}
|
|
113
98
|
if (deltas.pitch) {
|
|
114
99
|
const result = calculateEasing(deltas.pitch, duration, defaultPitchInertiaOptions);
|
|
115
|
-
easeOptions.pitch = this.
|
|
100
|
+
easeOptions.pitch = this._map.transform.pitch + result.amount;
|
|
116
101
|
extendDuration(easeOptions, result);
|
|
117
102
|
}
|
|
118
103
|
if (easeOptions.zoom || easeOptions.bearing) {
|
|
119
104
|
const last = deltas.pinchAround === undefined ? deltas.around : deltas.pinchAround;
|
|
120
|
-
easeOptions.around = last ? this.
|
|
105
|
+
easeOptions.around = last ? this._map.unproject(last) : this._map.getCenter();
|
|
121
106
|
}
|
|
122
107
|
this.clear();
|
|
123
|
-
return
|
|
108
|
+
return (0, _util.extend)(easeOptions, {
|
|
124
109
|
noMoveStart: true
|
|
125
110
|
});
|
|
126
111
|
}
|
|
@@ -128,7 +113,7 @@ class HandlerInertia {
|
|
|
128
113
|
|
|
129
114
|
// Unfortunately zoom, bearing, etc can't have different durations and easings so
|
|
130
115
|
// we need to choose one. We use the longest duration and it's corresponding easing.
|
|
131
|
-
exports.
|
|
116
|
+
exports.HandlerInertia = HandlerInertia;
|
|
132
117
|
function extendDuration(easeOptions, result) {
|
|
133
118
|
if (!easeOptions.duration || easeOptions.duration < result.duration) {
|
|
134
119
|
easeOptions.duration = result.duration;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/// <reference types="mapbox__point-geometry" />
|
|
2
|
+
import Point from '@mapbox/point-geometry';
|
|
3
|
+
import { HandlerInertia } from './handler_inertia';
|
|
4
|
+
import type { CompleteMapOptions, Map } from './map';
|
|
5
|
+
import { Event } from './util/evented';
|
|
6
|
+
/**
|
|
7
|
+
* Handlers interpret dom events and return camera changes that should be
|
|
8
|
+
* applied to the map (`HandlerResult`s). The camera changes are all deltas.
|
|
9
|
+
* The handler itself should have no knowledge of the map's current state.
|
|
10
|
+
* This makes it easier to merge multiple results and keeps handlers simpler.
|
|
11
|
+
* For example, if there is a mousedown and mousemove, the mousePan handler
|
|
12
|
+
* would return a `panDelta` on the mousemove.
|
|
13
|
+
*/
|
|
14
|
+
export interface Handler {
|
|
15
|
+
enable(): void;
|
|
16
|
+
disable(): void;
|
|
17
|
+
isEnabled(): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* This is used to indicate if the handler is currently active or not.
|
|
20
|
+
* In case a handler is active, it will block other handlers from getting the relevant events.
|
|
21
|
+
* There is an allow list of handlers that can be active at the same time, which is configured when adding a handler.
|
|
22
|
+
*/
|
|
23
|
+
isActive(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* `reset` can be called by the manager at any time and must reset everything to it's original state
|
|
26
|
+
*/
|
|
27
|
+
reset(): void;
|
|
28
|
+
readonly touchstart?: (e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) => HandlerResult | void;
|
|
29
|
+
readonly touchmove?: (e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) => HandlerResult | void;
|
|
30
|
+
readonly touchmoveWindow?: (e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) => HandlerResult | void;
|
|
31
|
+
readonly touchend?: (e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) => HandlerResult | void;
|
|
32
|
+
readonly touchcancel?: (e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) => HandlerResult | void;
|
|
33
|
+
readonly mousedown?: (e: MouseEvent, point: Point) => HandlerResult | void;
|
|
34
|
+
readonly mousemove?: (e: MouseEvent, point: Point) => HandlerResult | void;
|
|
35
|
+
readonly mousemoveWindow?: (e: MouseEvent, point: Point) => HandlerResult | void;
|
|
36
|
+
readonly mouseup?: (e: MouseEvent, point: Point) => HandlerResult | void;
|
|
37
|
+
readonly mouseupWindow?: (e: MouseEvent, point: Point) => HandlerResult | void;
|
|
38
|
+
readonly dblclick?: (e: MouseEvent, point: Point) => HandlerResult | void;
|
|
39
|
+
readonly contextmenu?: (e: MouseEvent) => HandlerResult | void;
|
|
40
|
+
readonly wheel?: (e: WheelEvent, point: Point) => HandlerResult | void;
|
|
41
|
+
readonly keydown?: (e: KeyboardEvent) => HandlerResult | void;
|
|
42
|
+
readonly keyup?: (e: KeyboardEvent) => HandlerResult | void;
|
|
43
|
+
/**
|
|
44
|
+
* `renderFrame` is the only non-dom event. It is called during render
|
|
45
|
+
* frames and can be used to smooth camera changes (see scroll handler).
|
|
46
|
+
*/
|
|
47
|
+
readonly renderFrame?: () => HandlerResult | void;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* All handler methods that are called with events can optionally return a `HandlerResult`.
|
|
51
|
+
*/
|
|
52
|
+
export type HandlerResult = {
|
|
53
|
+
panDelta?: Point;
|
|
54
|
+
zoomDelta?: number;
|
|
55
|
+
bearingDelta?: number;
|
|
56
|
+
pitchDelta?: number;
|
|
57
|
+
/**
|
|
58
|
+
* the point to not move when changing the camera
|
|
59
|
+
*/
|
|
60
|
+
around?: Point | null;
|
|
61
|
+
/**
|
|
62
|
+
* same as above, except for pinch actions, which are given higher priority
|
|
63
|
+
*/
|
|
64
|
+
pinchAround?: Point | null;
|
|
65
|
+
/**
|
|
66
|
+
* A method that can fire a one-off easing by directly changing the map's camera.
|
|
67
|
+
*/
|
|
68
|
+
cameraAnimation?: (map: Map) => any;
|
|
69
|
+
/**
|
|
70
|
+
* The last three properties are needed by only one handler: scrollzoom.
|
|
71
|
+
* The DOM event to be used as the `originalEvent` on any camera change events.
|
|
72
|
+
*/
|
|
73
|
+
originalEvent?: Event;
|
|
74
|
+
/**
|
|
75
|
+
* Makes the manager trigger a frame, allowing the handler to return multiple results over time (see scrollzoom).
|
|
76
|
+
*/
|
|
77
|
+
needsRenderFrame?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* The camera changes won't get recorded for inertial zooming.
|
|
80
|
+
*/
|
|
81
|
+
noInertia?: boolean;
|
|
82
|
+
};
|
|
83
|
+
export type EventInProgress = {
|
|
84
|
+
handlerName: string;
|
|
85
|
+
originalEvent: Event;
|
|
86
|
+
};
|
|
87
|
+
export type EventsInProgress = {
|
|
88
|
+
zoom?: EventInProgress;
|
|
89
|
+
pitch?: EventInProgress;
|
|
90
|
+
rotate?: EventInProgress;
|
|
91
|
+
drag?: EventInProgress;
|
|
92
|
+
};
|
|
93
|
+
export declare class HandlerManager {
|
|
94
|
+
_map: Map;
|
|
95
|
+
_el: HTMLElement;
|
|
96
|
+
_handlers: Array<{
|
|
97
|
+
handlerName: string;
|
|
98
|
+
handler: Handler;
|
|
99
|
+
allowed: Array<string>;
|
|
100
|
+
}>;
|
|
101
|
+
_eventsInProgress: EventsInProgress;
|
|
102
|
+
_frameId: number;
|
|
103
|
+
_inertia: HandlerInertia;
|
|
104
|
+
_bearingSnap: number;
|
|
105
|
+
_handlersById: {
|
|
106
|
+
[x: string]: Handler;
|
|
107
|
+
};
|
|
108
|
+
_updatingCamera: boolean;
|
|
109
|
+
_changes: Array<[HandlerResult, EventsInProgress, {
|
|
110
|
+
[handlerName: string]: Event;
|
|
111
|
+
}]>;
|
|
112
|
+
_zoom: {
|
|
113
|
+
handlerName: string;
|
|
114
|
+
};
|
|
115
|
+
_previousActiveHandlers: {
|
|
116
|
+
[x: string]: Handler;
|
|
117
|
+
};
|
|
118
|
+
_listeners: Array<[
|
|
119
|
+
Window | Document | HTMLElement,
|
|
120
|
+
string,
|
|
121
|
+
({
|
|
122
|
+
passive?: boolean;
|
|
123
|
+
capture?: boolean;
|
|
124
|
+
} | undefined)
|
|
125
|
+
]>;
|
|
126
|
+
constructor(map: Map, options: CompleteMapOptions);
|
|
127
|
+
destroy(): void;
|
|
128
|
+
_addDefaultHandlers(options: CompleteMapOptions): void;
|
|
129
|
+
_add(handlerName: string, handler: Handler, allowed?: Array<string>): void;
|
|
130
|
+
stop(allowEndAnimation: boolean): void;
|
|
131
|
+
isActive(): boolean;
|
|
132
|
+
isZooming(): boolean;
|
|
133
|
+
isRotating(): boolean;
|
|
134
|
+
isMoving(): boolean;
|
|
135
|
+
_blockedByActive(activeHandlers: {
|
|
136
|
+
[x: string]: Handler;
|
|
137
|
+
}, allowed: Array<string>, myName: string): boolean;
|
|
138
|
+
handleWindowEvent: (e: {
|
|
139
|
+
type: 'mousemove' | 'mouseup' | 'touchmove';
|
|
140
|
+
}) => void;
|
|
141
|
+
_getMapTouches(touches: TouchList): TouchList;
|
|
142
|
+
handleEvent: (e: Event, eventName?: keyof Handler) => void;
|
|
143
|
+
mergeHandlerResult(mergedHandlerResult: HandlerResult, eventsInProgress: EventsInProgress, handlerResult: HandlerResult, name: string, e?: UIEvent): void;
|
|
144
|
+
_applyChanges(): void;
|
|
145
|
+
_updateMapTransform(combinedResult: HandlerResult, combinedEventsInProgress: EventsInProgress, deactivatedHandlers: {
|
|
146
|
+
[handlerName: string]: Event;
|
|
147
|
+
}): void;
|
|
148
|
+
_fireEvents(newEventsInProgress: EventsInProgress, deactivatedHandlers: {
|
|
149
|
+
[handlerName: string]: Event;
|
|
150
|
+
}, allowEndAnimation: boolean): void;
|
|
151
|
+
_fireEvent(type: string, e?: Event): void;
|
|
152
|
+
_requestFrame(): number;
|
|
153
|
+
_triggerRenderFrame(): void;
|
|
154
|
+
}
|