@antv/l7-map 2.17.4 → 2.17.5
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/es/camera.js +90 -148
- package/es/earthmap.js +13 -65
- package/es/geo/edge_insets.js +4 -14
- package/es/geo/lng_lat.js +5 -13
- package/es/geo/lng_lat_bounds.js +4 -17
- package/es/geo/mercator.js +2 -10
- package/es/geo/point.js +0 -7
- package/es/geo/simple.js +6 -11
- package/es/geo/transform.js +123 -132
- package/es/handler/blockable_map_event.js +7 -12
- package/es/handler/box_zoom.js +10 -30
- package/es/handler/click_zoom.js +0 -5
- package/es/handler/events/event.js +0 -2
- package/es/handler/events/map_mouse_event.js +0 -12
- package/es/handler/events/map_touch_event.js +2 -12
- package/es/handler/events/map_wheel_event.js +1 -12
- package/es/handler/events/render_event.js +0 -13
- package/es/handler/handler_inertia.js +6 -34
- package/es/handler/handler_manager.js +55 -147
- package/es/handler/handler_util.js +1 -2
- package/es/handler/keyboard.js +1 -20
- package/es/handler/map_event.js +3 -9
- package/es/handler/mouse/mouse_handler.js +11 -24
- package/es/handler/mouse/mousepan_handler.js +1 -11
- package/es/handler/mouse/mousepitch_hander.js +1 -11
- package/es/handler/mouse/mouserotate_hander.js +1 -11
- package/es/handler/mouse/util.js +2 -3
- package/es/handler/scroll_zoom.js +43 -71
- package/es/handler/shim/dblclick_zoom.js +4 -9
- package/es/handler/shim/drag_pan.js +4 -11
- package/es/handler/shim/drag_rotate.js +4 -10
- package/es/handler/shim/touch_zoom_rotate.js +6 -16
- package/es/handler/tap/single_tap_recognizer.js +8 -31
- package/es/handler/tap/tap_drag_zoom.js +7 -15
- package/es/handler/tap/tap_recognizer.js +3 -11
- package/es/handler/tap/tap_zoom.js +1 -7
- package/es/handler/touch/touch_pan.js +4 -22
- package/es/handler/touch/touch_pitch.js +10 -27
- package/es/handler/touch/touch_rotate.js +8 -19
- package/es/handler/touch/touch_zoom.js +5 -18
- package/es/handler/touch/two_touch.js +19 -32
- package/es/hash.js +9 -31
- package/es/map.js +16 -78
- package/es/util.js +18 -26
- package/es/utils/Aabb.js +10 -31
- package/es/utils/dom.js +24 -58
- package/es/utils/performance.js +8 -7
- package/es/utils/primitives.js +13 -11
- package/es/utils/task_queue.js +6 -23
- package/lib/camera.js +90 -168
- package/lib/earthmap.js +11 -79
- package/lib/geo/edge_insets.js +3 -18
- package/lib/geo/lng_lat.js +5 -18
- package/lib/geo/lng_lat_bounds.js +4 -20
- package/lib/geo/mercator.js +1 -22
- package/lib/geo/point.js +0 -8
- package/lib/geo/simple.js +5 -24
- package/lib/geo/transform.js +123 -164
- package/lib/handler/blockable_map_event.js +6 -14
- package/lib/handler/box_zoom.js +8 -39
- package/lib/handler/click_zoom.js +0 -6
- package/lib/handler/events/event.js +0 -5
- package/lib/handler/events/index.js +0 -4
- package/lib/handler/events/map_mouse_event.js +0 -19
- package/lib/handler/events/map_touch_event.js +1 -20
- package/lib/handler/events/map_wheel_event.js +1 -16
- package/lib/handler/events/render_event.js +0 -19
- package/lib/handler/handler_inertia.js +4 -37
- package/lib/handler/handler_manager.js +55 -171
- package/lib/handler/handler_util.js +1 -3
- package/lib/handler/keyboard.js +1 -22
- package/lib/handler/map_event.js +2 -11
- package/lib/handler/mouse/index.js +0 -4
- package/lib/handler/mouse/mouse_handler.js +10 -27
- package/lib/handler/mouse/mousepan_handler.js +0 -17
- package/lib/handler/mouse/mousepitch_hander.js +0 -16
- package/lib/handler/mouse/mouserotate_hander.js +0 -16
- package/lib/handler/mouse/util.js +2 -6
- package/lib/handler/scroll_zoom.js +43 -77
- package/lib/handler/shim/dblclick_zoom.js +4 -10
- package/lib/handler/shim/drag_pan.js +4 -13
- package/lib/handler/shim/drag_rotate.js +4 -11
- package/lib/handler/shim/touch_zoom_rotate.js +6 -18
- package/lib/handler/tap/single_tap_recognizer.js +8 -33
- package/lib/handler/tap/tap_drag_zoom.js +6 -18
- package/lib/handler/tap/tap_recognizer.js +2 -17
- package/lib/handler/tap/tap_zoom.js +0 -9
- package/lib/handler/touch/index.js +0 -5
- package/lib/handler/touch/touch_pan.js +4 -25
- package/lib/handler/touch/touch_pitch.js +9 -31
- package/lib/handler/touch/touch_rotate.js +7 -24
- package/lib/handler/touch/touch_zoom.js +4 -23
- package/lib/handler/touch/two_touch.js +18 -35
- package/lib/hash.js +8 -35
- package/lib/index.js +0 -8
- package/lib/map.js +14 -94
- package/lib/util.js +16 -38
- package/lib/utils/Aabb.js +10 -34
- package/lib/utils/dom.js +22 -64
- package/lib/utils/performance.js +8 -9
- package/lib/utils/primitives.js +13 -16
- package/lib/utils/task_queue.js +6 -24
- package/package.json +3 -3
package/lib/camera.js
CHANGED
|
@@ -1,63 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
10
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
-
|
|
16
11
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
-
|
|
18
12
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
-
|
|
20
13
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
-
|
|
22
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
-
|
|
24
15
|
var _eventemitter = require("eventemitter3");
|
|
25
|
-
|
|
26
16
|
var _lodash = require("lodash");
|
|
27
|
-
|
|
28
17
|
var _lng_lat = _interopRequireDefault(require("./geo/lng_lat"));
|
|
29
|
-
|
|
30
18
|
var _lng_lat_bounds = _interopRequireDefault(require("./geo/lng_lat_bounds"));
|
|
31
|
-
|
|
32
19
|
var _point = _interopRequireDefault(require("./geo/point"));
|
|
33
|
-
|
|
34
20
|
var _transform = _interopRequireDefault(require("./geo/transform"));
|
|
35
|
-
|
|
36
21
|
var _event = require("./handler/events/event");
|
|
37
|
-
|
|
38
22
|
var _util = require("./util");
|
|
39
|
-
|
|
40
23
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
41
|
-
|
|
42
24
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
43
|
-
|
|
44
25
|
var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
45
26
|
(0, _inherits2.default)(Camera, _EventEmitter);
|
|
46
|
-
|
|
47
27
|
var _super = _createSuper(Camera);
|
|
48
|
-
|
|
49
28
|
// public requestRenderFrame: (_: any) => number;
|
|
50
29
|
// public cancelRenderFrame: (_: number) => void;
|
|
30
|
+
|
|
51
31
|
function Camera(options) {
|
|
52
32
|
var _this;
|
|
53
|
-
|
|
54
33
|
(0, _classCallCheck2.default)(this, Camera);
|
|
55
34
|
_this = _super.call(this);
|
|
56
35
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderFrameCallback", function () {
|
|
57
36
|
var t = Math.min(((0, _util.now)() - _this.easeStart) / _this.easeOptions.duration, 1);
|
|
58
|
-
|
|
59
37
|
_this.onEaseFrame(_this.easeOptions.easing(t));
|
|
60
|
-
|
|
61
38
|
if (t < 1) {
|
|
62
39
|
// this.easeFrameId = window.requestAnimationFrame(this.renderFrameCallback);
|
|
63
40
|
_this.easeFrameId = _this.requestRenderFrame(_this.renderFrameCallback);
|
|
@@ -67,10 +44,10 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
67
44
|
});
|
|
68
45
|
_this.options = options;
|
|
69
46
|
var minZoom = options.minZoom,
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
47
|
+
maxZoom = options.maxZoom,
|
|
48
|
+
minPitch = options.minPitch,
|
|
49
|
+
maxPitch = options.maxPitch,
|
|
50
|
+
renderWorldCopies = options.renderWorldCopies;
|
|
74
51
|
_this.moving = false;
|
|
75
52
|
_this.zooming = false;
|
|
76
53
|
_this.bearingSnap = options.bearingSnap;
|
|
@@ -78,15 +55,14 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
78
55
|
_this.rotateEnabled = options.rotateEnabled;
|
|
79
56
|
_this.transform = new _transform.default(minZoom, maxZoom, minPitch, maxPitch, renderWorldCopies);
|
|
80
57
|
return _this;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
58
|
+
}
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
84
60
|
(0, _createClass2.default)(Camera, [{
|
|
85
61
|
key: "requestRenderFrame",
|
|
86
62
|
value: function requestRenderFrame(cb) {
|
|
87
63
|
return 0;
|
|
88
|
-
}
|
|
89
|
-
|
|
64
|
+
}
|
|
65
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
90
66
|
}, {
|
|
91
67
|
key: "cancelRenderFrame",
|
|
92
68
|
value: function cancelRenderFrame(_) {
|
|
@@ -96,8 +72,8 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
96
72
|
key: "getCenter",
|
|
97
73
|
value: function getCenter() {
|
|
98
74
|
var _this$transform$cente = this.transform.center,
|
|
99
|
-
|
|
100
|
-
|
|
75
|
+
lng = _this$transform$cente.lng,
|
|
76
|
+
lat = _this$transform$cente.lat;
|
|
101
77
|
return new _lng_lat.default(lng, lat);
|
|
102
78
|
}
|
|
103
79
|
}, {
|
|
@@ -221,14 +197,16 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
221
197
|
}, {
|
|
222
198
|
key: "fitBounds",
|
|
223
199
|
value: function fitBounds(bounds, options, eventData) {
|
|
224
|
-
return this.fitInternal(
|
|
200
|
+
return this.fitInternal(
|
|
201
|
+
// @ts-ignore
|
|
225
202
|
this.cameraForBounds(bounds, options), options, eventData);
|
|
226
203
|
}
|
|
227
204
|
}, {
|
|
228
205
|
key: "cameraForBounds",
|
|
229
206
|
value: function cameraForBounds(bounds, options) {
|
|
230
207
|
bounds = _lng_lat_bounds.default.convert(bounds);
|
|
231
|
-
return this.cameraForBoxAndBearing(bounds.getNorthWest(), bounds.getSouthEast(), 0,
|
|
208
|
+
return this.cameraForBoxAndBearing(bounds.getNorthWest(), bounds.getSouthEast(), 0,
|
|
209
|
+
// @ts-ignore
|
|
232
210
|
options);
|
|
233
211
|
}
|
|
234
212
|
}, {
|
|
@@ -237,7 +215,6 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
237
215
|
if (Math.abs(this.getBearing()) < this.bearingSnap) {
|
|
238
216
|
return this.resetNorth(options, eventData);
|
|
239
217
|
}
|
|
240
|
-
|
|
241
218
|
return this;
|
|
242
219
|
}
|
|
243
220
|
}, {
|
|
@@ -250,58 +227,47 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
250
227
|
var zoomChanged = false;
|
|
251
228
|
var bearingChanged = false;
|
|
252
229
|
var pitchChanged = false;
|
|
253
|
-
|
|
254
230
|
if (options.zoom !== undefined && tr.zoom !== +options.zoom) {
|
|
255
231
|
zoomChanged = true;
|
|
256
232
|
tr.zoom = +options.zoom;
|
|
257
233
|
}
|
|
258
|
-
|
|
259
234
|
if (options.center !== undefined) {
|
|
260
235
|
tr.center = _lng_lat.default.convert(options.center);
|
|
261
236
|
}
|
|
262
|
-
|
|
263
237
|
if (options.bearing !== undefined && tr.bearing !== +options.bearing) {
|
|
264
238
|
bearingChanged = true;
|
|
265
239
|
tr.bearing = +options.bearing;
|
|
266
240
|
}
|
|
267
|
-
|
|
268
241
|
if (options.pitch !== undefined && tr.pitch !== +options.pitch) {
|
|
269
242
|
pitchChanged = true;
|
|
270
243
|
tr.pitch = +options.pitch;
|
|
271
244
|
}
|
|
272
|
-
|
|
273
245
|
if (options.padding !== undefined && !tr.isPaddingEqual(options.padding)) {
|
|
274
246
|
tr.padding = options.padding;
|
|
275
247
|
}
|
|
276
|
-
|
|
277
248
|
this.emit('movestart', new _event.Event('movestart', eventData));
|
|
278
249
|
this.emit('move', new _event.Event('move', eventData));
|
|
279
|
-
|
|
280
250
|
if (zoomChanged) {
|
|
281
251
|
this.emit('zoomstart', new _event.Event('zoomstart', eventData));
|
|
282
252
|
this.emit('zoom', new _event.Event('zoom', eventData));
|
|
283
253
|
this.emit('zoomend', new _event.Event('zoomend', eventData));
|
|
284
254
|
}
|
|
285
|
-
|
|
286
255
|
if (bearingChanged) {
|
|
287
256
|
this.emit('rotatestart', new _event.Event('rotatestart', eventData));
|
|
288
257
|
this.emit('rotate', new _event.Event('rotate', eventData));
|
|
289
258
|
this.emit('rotateend', new _event.Event('rotateend', eventData));
|
|
290
259
|
}
|
|
291
|
-
|
|
292
260
|
if (pitchChanged) {
|
|
293
261
|
this.emit('pitchstart', new _event.Event('pitchstart', eventData));
|
|
294
262
|
this.emit('pitch', new _event.Event('pitch', eventData));
|
|
295
263
|
this.emit('pitchend', new _event.Event('pitchend', eventData));
|
|
296
264
|
}
|
|
297
|
-
|
|
298
265
|
return this.emit('moveend', new _event.Event('moveend', eventData));
|
|
299
266
|
}
|
|
300
267
|
}, {
|
|
301
268
|
key: "easeTo",
|
|
302
269
|
value: function easeTo() {
|
|
303
270
|
var _this2 = this;
|
|
304
|
-
|
|
305
271
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
306
272
|
var eventData = arguments.length > 1 ? arguments[1] : undefined;
|
|
307
273
|
options = (0, _lodash.merge)({
|
|
@@ -309,11 +275,9 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
309
275
|
duration: 500,
|
|
310
276
|
easing: _util.ease
|
|
311
277
|
}, options);
|
|
312
|
-
|
|
313
278
|
if (options.animate === false || !options.essential && (0, _util.prefersReducedMotion)()) {
|
|
314
279
|
options.duration = 0;
|
|
315
280
|
}
|
|
316
|
-
|
|
317
281
|
var tr = this.transform;
|
|
318
282
|
var startZoom = this.getZoom();
|
|
319
283
|
var startBearing = this.getBearing();
|
|
@@ -323,26 +287,20 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
323
287
|
var bearing = options.bearing ? this.normalizeBearing(options.bearing, startBearing) : startBearing;
|
|
324
288
|
var pitch = options.pitch ? +options.pitch : startPitch;
|
|
325
289
|
var padding = options.padding ? options.padding : tr.padding;
|
|
326
|
-
|
|
327
290
|
var offsetAsPoint = _point.default.convert(options.offset);
|
|
328
|
-
|
|
329
291
|
var pointAtOffset = tr.centerPoint.add(offsetAsPoint);
|
|
330
292
|
var locationAtOffset = tr.pointLocation(pointAtOffset);
|
|
331
|
-
|
|
332
293
|
var center = _lng_lat.default.convert(options.center || locationAtOffset);
|
|
333
|
-
|
|
334
294
|
this.normalizeCenter(center);
|
|
335
295
|
var from = tr.project(locationAtOffset);
|
|
336
296
|
var delta = tr.project(center).sub(from);
|
|
337
297
|
var finalScale = tr.zoomScale(zoom - startZoom);
|
|
338
298
|
var around;
|
|
339
299
|
var aroundPoint;
|
|
340
|
-
|
|
341
300
|
if (options.around) {
|
|
342
301
|
around = _lng_lat.default.convert(options.around);
|
|
343
302
|
aroundPoint = tr.locationPoint(around);
|
|
344
303
|
}
|
|
345
|
-
|
|
346
304
|
var currently = {
|
|
347
305
|
moving: this.moving,
|
|
348
306
|
zooming: this.zooming,
|
|
@@ -360,22 +318,18 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
360
318
|
if (_this2.zooming) {
|
|
361
319
|
tr.zoom = (0, _util.interpolate)(startZoom, zoom, k);
|
|
362
320
|
}
|
|
363
|
-
|
|
364
321
|
if (_this2.rotating && _this2.rotateEnabled) {
|
|
365
322
|
tr.bearing = (0, _util.interpolate)(startBearing, bearing, k);
|
|
366
323
|
}
|
|
367
|
-
|
|
368
324
|
if (_this2.pitching && _this2.pitchEnabled) {
|
|
369
325
|
tr.pitch = (0, _util.interpolate)(startPitch, pitch, k);
|
|
370
326
|
}
|
|
371
|
-
|
|
372
327
|
if (_this2.padding) {
|
|
373
|
-
tr.interpolatePadding(startPadding, padding, k);
|
|
328
|
+
tr.interpolatePadding(startPadding, padding, k);
|
|
329
|
+
// When padding is being applied, Transform#centerPoint is changing continously,
|
|
374
330
|
// thus we need to recalculate offsetPoint every fra,e
|
|
375
|
-
|
|
376
331
|
pointAtOffset = tr.centerPoint.add(offsetAsPoint);
|
|
377
332
|
}
|
|
378
|
-
|
|
379
333
|
if (around) {
|
|
380
334
|
tr.setLocationAtPoint(around, aroundPoint);
|
|
381
335
|
} else {
|
|
@@ -385,11 +339,11 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
385
339
|
var newCenter = tr.unproject(from.add(delta.mult(k * speedup)).mult(scale));
|
|
386
340
|
tr.setLocationAtPoint(tr.renderWorldCopies ? newCenter.wrap() : newCenter, pointAtOffset);
|
|
387
341
|
}
|
|
388
|
-
|
|
389
342
|
_this2.fireMoveEvents(eventData);
|
|
390
343
|
}, function (interruptingEaseId) {
|
|
391
344
|
_this2.afterEase(eventData, interruptingEaseId);
|
|
392
|
-
},
|
|
345
|
+
},
|
|
346
|
+
// @ts-ignore
|
|
393
347
|
options);
|
|
394
348
|
return this;
|
|
395
349
|
}
|
|
@@ -397,16 +351,13 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
397
351
|
key: "flyTo",
|
|
398
352
|
value: function flyTo() {
|
|
399
353
|
var _this3 = this;
|
|
400
|
-
|
|
401
354
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
402
355
|
var eventData = arguments.length > 1 ? arguments[1] : undefined;
|
|
403
|
-
|
|
404
356
|
// Fall through to jumpTo if user has set prefers-reduced-motion
|
|
405
357
|
if (!options.essential && (0, _util.prefersReducedMotion)()) {
|
|
406
358
|
var coercedOptions = (0, _util.pick)(options, ['center', 'zoom', 'bearing', 'pitch', 'around']);
|
|
407
359
|
return this.jumpTo(coercedOptions, eventData);
|
|
408
360
|
}
|
|
409
|
-
|
|
410
361
|
this.stop();
|
|
411
362
|
options = (0, _lodash.merge)({
|
|
412
363
|
offset: [0, 0],
|
|
@@ -424,106 +375,95 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
424
375
|
var pitch = options.pitch ? +options.pitch : startPitch;
|
|
425
376
|
var padding = 'padding' in options ? options.padding : tr.padding;
|
|
426
377
|
var scale = tr.zoomScale(zoom - startZoom);
|
|
427
|
-
|
|
428
378
|
var offsetAsPoint = _point.default.convert(options.offset);
|
|
429
|
-
|
|
430
379
|
var pointAtOffset = tr.centerPoint.add(offsetAsPoint);
|
|
431
380
|
var locationAtOffset = tr.pointLocation(pointAtOffset);
|
|
432
|
-
|
|
433
381
|
var center = _lng_lat.default.convert(options.center || locationAtOffset);
|
|
434
|
-
|
|
435
382
|
this.normalizeCenter(center);
|
|
436
383
|
var from = tr.project(locationAtOffset);
|
|
437
384
|
var delta = tr.project(center).sub(from);
|
|
438
|
-
var rho = options.curve;
|
|
439
|
-
|
|
440
|
-
var w0 = Math.max(tr.width, tr.height); // w₁: Final visible span, measured in pixels with respect to the initial scale.
|
|
385
|
+
var rho = options.curve;
|
|
441
386
|
|
|
442
|
-
|
|
387
|
+
// w₀: Initial visible span, measured in pixels at the initial scale.
|
|
388
|
+
var w0 = Math.max(tr.width, tr.height);
|
|
389
|
+
// w₁: Final visible span, measured in pixels with respect to the initial scale.
|
|
390
|
+
var w1 = w0 / scale;
|
|
391
|
+
// Length of the flight path as projected onto the ground plane, measured in pixels from
|
|
443
392
|
// the world image origin at the initial scale.
|
|
444
|
-
|
|
445
393
|
var u1 = delta.mag();
|
|
446
|
-
|
|
447
394
|
if ('minZoom' in options) {
|
|
448
|
-
var minZoom = (0, _util.clamp)(Math.min(options.minZoom, startZoom, zoom), tr.minZoom, tr.maxZoom);
|
|
395
|
+
var minZoom = (0, _util.clamp)(Math.min(options.minZoom, startZoom, zoom), tr.minZoom, tr.maxZoom);
|
|
396
|
+
// w<sub>m</sub>: Maximum visible span, measured in pixels with respect to the initial
|
|
449
397
|
// scale.
|
|
450
|
-
|
|
451
398
|
var wMax = w0 / tr.zoomScale(minZoom - startZoom);
|
|
452
399
|
rho = Math.sqrt(wMax / u1 * 2);
|
|
453
|
-
}
|
|
454
|
-
|
|
400
|
+
}
|
|
455
401
|
|
|
402
|
+
// ρ²
|
|
456
403
|
var rho2 = rho * rho;
|
|
404
|
+
|
|
457
405
|
/**
|
|
458
406
|
* rᵢ: Returns the zoom-out factor at one end of the animation.
|
|
459
407
|
*
|
|
460
408
|
* @param i 0 for the ascent or 1 for the descent.
|
|
461
409
|
* @private
|
|
462
410
|
*/
|
|
463
|
-
|
|
464
411
|
function r(i) {
|
|
465
412
|
var b = (w1 * w1 - w0 * w0 + (i ? -1 : 1) * rho2 * rho2 * u1 * u1) / (2 * (i ? w1 : w0) * rho2 * u1);
|
|
466
413
|
return Math.log(Math.sqrt(b * b + 1) - b);
|
|
467
414
|
}
|
|
468
|
-
|
|
469
415
|
function sinh(n) {
|
|
470
416
|
return (Math.exp(n) - Math.exp(-n)) / 2;
|
|
471
417
|
}
|
|
472
|
-
|
|
473
418
|
function cosh(n) {
|
|
474
419
|
return (Math.exp(n) + Math.exp(-n)) / 2;
|
|
475
420
|
}
|
|
476
|
-
|
|
477
421
|
function tanh(n) {
|
|
478
422
|
return sinh(n) / cosh(n);
|
|
479
|
-
}
|
|
423
|
+
}
|
|
480
424
|
|
|
425
|
+
// r₀: Zoom-out factor during ascent.
|
|
426
|
+
var r0 = r(0);
|
|
481
427
|
|
|
482
|
-
|
|
428
|
+
// w(s): Returns the visible span on the ground, measured in pixels with respect to the
|
|
483
429
|
// initial scale. Assumes an angular field of view of 2 arctan ½ ≈ 53°.
|
|
484
|
-
|
|
485
430
|
var w = function w(s) {
|
|
486
431
|
return cosh(r0) / cosh(r0 + rho * s);
|
|
487
|
-
};
|
|
488
|
-
// measured in pixels from the world image origin at the initial scale.
|
|
489
|
-
|
|
432
|
+
};
|
|
490
433
|
|
|
434
|
+
// u(s): Returns the distance along the flight path as projected onto the ground plane,
|
|
435
|
+
// measured in pixels from the world image origin at the initial scale.
|
|
491
436
|
var u = function u(s) {
|
|
492
437
|
return w0 * ((cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2) / u1;
|
|
493
|
-
};
|
|
494
|
-
|
|
438
|
+
};
|
|
495
439
|
|
|
496
|
-
|
|
440
|
+
// S: Total length of the flight path, measured in ρ-screenfuls.
|
|
441
|
+
var S = (r(1) - r0) / rho;
|
|
497
442
|
|
|
443
|
+
// When u₀ = u₁, the optimal path doesn’t require both ascent and descent.
|
|
498
444
|
if (Math.abs(u1) < 0.000001 || !isFinite(S)) {
|
|
499
445
|
// Perform a more or less instantaneous transition if the path is too short.
|
|
500
446
|
if (Math.abs(w0 - w1) < 0.000001) {
|
|
501
447
|
return this.easeTo(options, eventData);
|
|
502
448
|
}
|
|
503
|
-
|
|
504
449
|
var k = w1 < w0 ? -1 : 1;
|
|
505
450
|
S = Math.abs(Math.log(w1 / w0)) / rho;
|
|
506
|
-
|
|
507
451
|
u = function u() {
|
|
508
452
|
return 0;
|
|
509
453
|
};
|
|
510
|
-
|
|
511
454
|
w = function w(s) {
|
|
512
455
|
return Math.exp(k * rho * s);
|
|
513
456
|
};
|
|
514
457
|
}
|
|
515
|
-
|
|
516
458
|
if ('duration' in options) {
|
|
517
459
|
options.duration = +options.duration;
|
|
518
460
|
} else {
|
|
519
461
|
var V = 'screenSpeed' in options ? +options.screenSpeed / rho : +options.speed;
|
|
520
462
|
options.duration = 1000 * S / V;
|
|
521
463
|
}
|
|
522
|
-
|
|
523
464
|
if (options.maxDuration && options.duration > options.maxDuration) {
|
|
524
465
|
options.duration = 0;
|
|
525
466
|
}
|
|
526
|
-
|
|
527
467
|
this.zooming = true;
|
|
528
468
|
this.rotating = startBearing !== bearing;
|
|
529
469
|
this.pitching = pitch !== startPitch;
|
|
@@ -531,29 +471,24 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
531
471
|
this.prepareEase(eventData, false);
|
|
532
472
|
this.ease(function (k) {
|
|
533
473
|
// s: The distance traveled along the flight path, measured in ρ-screenfuls.
|
|
534
|
-
var s = k * S;
|
|
535
|
-
|
|
474
|
+
var s = k * S;
|
|
475
|
+
// @ts-ignore
|
|
536
476
|
var easeScale = 1 / w(s);
|
|
537
477
|
tr.zoom = k === 1 ? zoom : startZoom + tr.scaleZoom(easeScale);
|
|
538
|
-
|
|
539
478
|
if (_this3.rotating) {
|
|
540
479
|
tr.bearing = (0, _util.interpolate)(startBearing, bearing, k);
|
|
541
480
|
}
|
|
542
|
-
|
|
543
481
|
if (_this3.pitching) {
|
|
544
482
|
tr.pitch = (0, _util.interpolate)(startPitch, pitch, k);
|
|
545
483
|
}
|
|
546
|
-
|
|
547
484
|
if (_this3.padding) {
|
|
548
|
-
tr.interpolatePadding(startPadding, padding, k);
|
|
485
|
+
tr.interpolatePadding(startPadding, padding, k);
|
|
486
|
+
// When padding is being applied, Transform#centerPoint is changing continously,
|
|
549
487
|
// thus we need to recalculate offsetPoint every frame
|
|
550
|
-
|
|
551
488
|
pointAtOffset = tr.centerPoint.add(offsetAsPoint);
|
|
552
489
|
}
|
|
553
|
-
|
|
554
490
|
var newCenter = k === 1 ? center : tr.unproject(from.add(delta.mult(u(s))).mult(easeScale));
|
|
555
491
|
tr.setLocationAtPoint(tr.renderWorldCopies ? newCenter.wrap() : newCenter, pointAtOffset);
|
|
556
|
-
|
|
557
492
|
_this3.fireMoveEvents(eventData);
|
|
558
493
|
}, function () {
|
|
559
494
|
return _this3.afterEase(eventData);
|
|
@@ -563,35 +498,35 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
563
498
|
}, {
|
|
564
499
|
key: "fitScreenCoordinates",
|
|
565
500
|
value: function fitScreenCoordinates(p0, p1, bearing, options, eventData) {
|
|
566
|
-
return this.fitInternal(
|
|
567
|
-
|
|
501
|
+
return this.fitInternal(
|
|
502
|
+
// @ts-ignore
|
|
503
|
+
this.cameraForBoxAndBearing(this.transform.pointLocation(_point.default.convert(p0)), this.transform.pointLocation(_point.default.convert(p1)), bearing,
|
|
504
|
+
// @ts-ignore
|
|
568
505
|
options), options, eventData);
|
|
569
506
|
}
|
|
570
507
|
}, {
|
|
571
508
|
key: "stop",
|
|
572
509
|
value: function stop(allowGestures, easeId) {
|
|
573
510
|
if (this.easeFrameId) {
|
|
574
|
-
this.cancelRenderFrame(this.easeFrameId);
|
|
575
|
-
|
|
576
|
-
delete this.easeFrameId;
|
|
577
|
-
|
|
511
|
+
this.cancelRenderFrame(this.easeFrameId);
|
|
512
|
+
// @ts-ignore
|
|
513
|
+
delete this.easeFrameId;
|
|
514
|
+
// @ts-ignore
|
|
578
515
|
delete this.onEaseFrame;
|
|
579
516
|
}
|
|
580
|
-
|
|
581
517
|
if (this.onEaseEnd) {
|
|
582
518
|
// The _onEaseEnd function might emit events which trigger new
|
|
583
519
|
// animation, which sets a new _onEaseEnd. Ensure we don't delete
|
|
584
520
|
// it unintentionally.
|
|
585
|
-
var onEaseEnd = this.onEaseEnd;
|
|
586
|
-
|
|
521
|
+
var onEaseEnd = this.onEaseEnd;
|
|
522
|
+
// @ts-ignore
|
|
587
523
|
delete this.onEaseEnd;
|
|
588
524
|
onEaseEnd.call(this, easeId);
|
|
589
|
-
}
|
|
525
|
+
}
|
|
526
|
+
// if (!allowGestures) {
|
|
590
527
|
// const handlers = (this: any).handlers;
|
|
591
528
|
// if (handlers) handlers.stop();
|
|
592
529
|
// }
|
|
593
|
-
|
|
594
|
-
|
|
595
530
|
return this;
|
|
596
531
|
}
|
|
597
532
|
}, {
|
|
@@ -599,26 +534,21 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
599
534
|
value: function normalizeBearing(bearing, currentBearing) {
|
|
600
535
|
bearing = (0, _util.wrap)(bearing, -180, 180);
|
|
601
536
|
var diff = Math.abs(bearing - currentBearing);
|
|
602
|
-
|
|
603
537
|
if (Math.abs(bearing - 360 - currentBearing) < diff) {
|
|
604
538
|
bearing -= 360;
|
|
605
539
|
}
|
|
606
|
-
|
|
607
540
|
if (Math.abs(bearing + 360 - currentBearing) < diff) {
|
|
608
541
|
bearing += 360;
|
|
609
542
|
}
|
|
610
|
-
|
|
611
543
|
return bearing;
|
|
612
544
|
}
|
|
613
545
|
}, {
|
|
614
546
|
key: "normalizeCenter",
|
|
615
547
|
value: function normalizeCenter(center) {
|
|
616
548
|
var tr = this.transform;
|
|
617
|
-
|
|
618
549
|
if (!tr.renderWorldCopies || tr.lngRange) {
|
|
619
550
|
return;
|
|
620
551
|
}
|
|
621
|
-
|
|
622
552
|
var delta = center.lng - tr.center.lng;
|
|
623
553
|
center.lng += delta > 180 ? -360 : delta < -180 ? 360 : 0;
|
|
624
554
|
}
|
|
@@ -626,15 +556,12 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
626
556
|
key: "fireMoveEvents",
|
|
627
557
|
value: function fireMoveEvents(eventData) {
|
|
628
558
|
this.emit('move', new _event.Event('move', eventData));
|
|
629
|
-
|
|
630
559
|
if (this.zooming) {
|
|
631
560
|
this.emit('zoom', new _event.Event('zoom', eventData));
|
|
632
561
|
}
|
|
633
|
-
|
|
634
562
|
if (this.rotating) {
|
|
635
563
|
this.emit('rotate', new _event.Event('rotate', eventData));
|
|
636
564
|
}
|
|
637
|
-
|
|
638
565
|
if (this.pitching) {
|
|
639
566
|
this.emit('rotate', new _event.Event('pitch', eventData));
|
|
640
567
|
}
|
|
@@ -645,19 +572,15 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
645
572
|
var noMoveStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
646
573
|
var currently = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
647
574
|
this.moving = true;
|
|
648
|
-
|
|
649
575
|
if (!noMoveStart && !currently.moving) {
|
|
650
576
|
this.emit('movestart', new _event.Event('movestart', eventData));
|
|
651
577
|
}
|
|
652
|
-
|
|
653
578
|
if (this.zooming && !currently.zooming) {
|
|
654
579
|
this.emit('zoomstart', new _event.Event('zoomstart', eventData));
|
|
655
580
|
}
|
|
656
|
-
|
|
657
581
|
if (this.rotating && !currently.rotating) {
|
|
658
582
|
this.emit('rotatestart', new _event.Event('rotatestart', eventData));
|
|
659
583
|
}
|
|
660
|
-
|
|
661
584
|
if (this.pitching && !currently.pitching) {
|
|
662
585
|
this.emit('pitchstart', new _event.Event('pitchstart', eventData));
|
|
663
586
|
}
|
|
@@ -669,9 +592,8 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
669
592
|
// the same id then don't fire any events to avoid extra start/stop events
|
|
670
593
|
if (this.easeId && easeId && this.easeId === easeId) {
|
|
671
594
|
return;
|
|
672
|
-
}
|
|
673
|
-
|
|
674
|
-
|
|
595
|
+
}
|
|
596
|
+
// @ts-ignore
|
|
675
597
|
delete this.easeId;
|
|
676
598
|
var wasZooming = this.zooming;
|
|
677
599
|
var wasRotating = this.rotating;
|
|
@@ -681,19 +603,15 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
681
603
|
this.rotating = false;
|
|
682
604
|
this.pitching = false;
|
|
683
605
|
this.padding = false;
|
|
684
|
-
|
|
685
606
|
if (wasZooming) {
|
|
686
607
|
this.emit('zoomend', new _event.Event('zoomend', eventData));
|
|
687
608
|
}
|
|
688
|
-
|
|
689
609
|
if (wasRotating) {
|
|
690
610
|
this.emit('rotateend', new _event.Event('rotateend', eventData));
|
|
691
611
|
}
|
|
692
|
-
|
|
693
612
|
if (wasPitching) {
|
|
694
613
|
this.emit('pitchend', new _event.Event('pitchend', eventData));
|
|
695
614
|
}
|
|
696
|
-
|
|
697
615
|
this.emit('moveend', new _event.Event('moveend', eventData));
|
|
698
616
|
}
|
|
699
617
|
}, {
|
|
@@ -724,7 +642,6 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
724
642
|
offset: [0, 0],
|
|
725
643
|
maxZoom: this.transform.maxZoom
|
|
726
644
|
}, options);
|
|
727
|
-
|
|
728
645
|
if (typeof options.padding === 'number') {
|
|
729
646
|
var p = options.padding;
|
|
730
647
|
options.padding = {
|
|
@@ -734,42 +651,49 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
734
651
|
left: p
|
|
735
652
|
};
|
|
736
653
|
}
|
|
737
|
-
|
|
738
654
|
options.padding = (0, _lodash.merge)(defaultPadding, options.padding);
|
|
739
655
|
var tr = this.transform;
|
|
740
|
-
var edgePadding = tr.padding;
|
|
741
|
-
// in a coordinate system rotate to match the destination bearing.
|
|
656
|
+
var edgePadding = tr.padding;
|
|
742
657
|
|
|
658
|
+
// We want to calculate the upper right and lower left of the box defined by p0 and p1
|
|
659
|
+
// in a coordinate system rotate to match the destination bearing.
|
|
743
660
|
var p0world = tr.project(_lng_lat.default.convert(p0));
|
|
744
661
|
var p1world = tr.project(_lng_lat.default.convert(p1));
|
|
745
662
|
var p0rotated = p0world.rotate(-bearing * Math.PI / 180);
|
|
746
663
|
var p1rotated = p1world.rotate(-bearing * Math.PI / 180);
|
|
747
664
|
var upperRight = new _point.default(Math.max(p0rotated.x, p1rotated.x), Math.max(p0rotated.y, p1rotated.y));
|
|
748
|
-
var lowerLeft = new _point.default(Math.min(p0rotated.x, p1rotated.x), Math.min(p0rotated.y, p1rotated.y));
|
|
665
|
+
var lowerLeft = new _point.default(Math.min(p0rotated.x, p1rotated.x), Math.min(p0rotated.y, p1rotated.y));
|
|
749
666
|
|
|
667
|
+
// Calculate zoom: consider the original bbox and padding.
|
|
750
668
|
var size = upperRight.sub(lowerLeft);
|
|
751
|
-
var scaleX = (tr.width - (
|
|
752
|
-
|
|
753
|
-
edgePadding.
|
|
754
|
-
|
|
669
|
+
var scaleX = (tr.width - (
|
|
670
|
+
// @ts-ignore
|
|
671
|
+
edgePadding.left +
|
|
672
|
+
// @ts-ignore
|
|
673
|
+
edgePadding.right +
|
|
674
|
+
// @ts-ignore
|
|
675
|
+
options.padding.left +
|
|
676
|
+
// @ts-ignore
|
|
755
677
|
options.padding.right)) / size.x;
|
|
756
|
-
var scaleY = (tr.height - (
|
|
757
|
-
|
|
758
|
-
edgePadding.
|
|
759
|
-
|
|
678
|
+
var scaleY = (tr.height - (
|
|
679
|
+
// @ts-ignore
|
|
680
|
+
edgePadding.top +
|
|
681
|
+
// @ts-ignore
|
|
682
|
+
edgePadding.bottom +
|
|
683
|
+
// @ts-ignore
|
|
684
|
+
options.padding.top +
|
|
685
|
+
// @ts-ignore
|
|
760
686
|
options.padding.bottom)) / size.y;
|
|
761
|
-
|
|
762
687
|
if (scaleY < 0 || scaleX < 0) {
|
|
763
688
|
return;
|
|
764
689
|
}
|
|
690
|
+
var zoom = Math.min(tr.scaleZoom(tr.scale * Math.min(scaleX, scaleY)), options.maxZoom);
|
|
765
691
|
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
var paddingOffsetX = (options.padding.left - options.padding.right) / 2; // @ts-ignore
|
|
772
|
-
|
|
692
|
+
// Calculate center: apply the zoom, the configured offset, as well as offset that exists as a result of padding.
|
|
693
|
+
var offset = _point.default.convert(options.offset);
|
|
694
|
+
// @ts-ignore
|
|
695
|
+
var paddingOffsetX = (options.padding.left - options.padding.right) / 2;
|
|
696
|
+
// @ts-ignore
|
|
773
697
|
var paddingOffsetY = (options.padding.top - options.padding.bottom) / 2;
|
|
774
698
|
var offsetAtInitialZoom = new _point.default(offset.x + paddingOffsetX, offset.y + paddingOffsetY);
|
|
775
699
|
var offsetAtFinalZoom = offsetAtInitialZoom.mult(tr.scale / tr.zoomScale(zoom));
|
|
@@ -787,15 +711,13 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
787
711
|
if (!calculatedOptions) {
|
|
788
712
|
return this;
|
|
789
713
|
}
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
714
|
+
options = (0, _lodash.merge)(calculatedOptions, options);
|
|
715
|
+
// Explictly remove the padding field because, calculatedOptions already accounts for padding by setting zoom and center accordingly.
|
|
716
|
+
delete options.padding;
|
|
717
|
+
// @ts-ignore
|
|
795
718
|
return options.linear ? this.easeTo(options, eventData) : this.flyTo(options, eventData);
|
|
796
719
|
}
|
|
797
720
|
}]);
|
|
798
721
|
return Camera;
|
|
799
722
|
}(_eventemitter.EventEmitter);
|
|
800
|
-
|
|
801
723
|
exports.default = Camera;
|