@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.
Files changed (103) hide show
  1. package/es/camera.js +90 -148
  2. package/es/earthmap.js +13 -65
  3. package/es/geo/edge_insets.js +4 -14
  4. package/es/geo/lng_lat.js +5 -13
  5. package/es/geo/lng_lat_bounds.js +4 -17
  6. package/es/geo/mercator.js +2 -10
  7. package/es/geo/point.js +0 -7
  8. package/es/geo/simple.js +6 -11
  9. package/es/geo/transform.js +123 -132
  10. package/es/handler/blockable_map_event.js +7 -12
  11. package/es/handler/box_zoom.js +10 -30
  12. package/es/handler/click_zoom.js +0 -5
  13. package/es/handler/events/event.js +0 -2
  14. package/es/handler/events/map_mouse_event.js +0 -12
  15. package/es/handler/events/map_touch_event.js +2 -12
  16. package/es/handler/events/map_wheel_event.js +1 -12
  17. package/es/handler/events/render_event.js +0 -13
  18. package/es/handler/handler_inertia.js +6 -34
  19. package/es/handler/handler_manager.js +55 -147
  20. package/es/handler/handler_util.js +1 -2
  21. package/es/handler/keyboard.js +1 -20
  22. package/es/handler/map_event.js +3 -9
  23. package/es/handler/mouse/mouse_handler.js +11 -24
  24. package/es/handler/mouse/mousepan_handler.js +1 -11
  25. package/es/handler/mouse/mousepitch_hander.js +1 -11
  26. package/es/handler/mouse/mouserotate_hander.js +1 -11
  27. package/es/handler/mouse/util.js +2 -3
  28. package/es/handler/scroll_zoom.js +43 -71
  29. package/es/handler/shim/dblclick_zoom.js +4 -9
  30. package/es/handler/shim/drag_pan.js +4 -11
  31. package/es/handler/shim/drag_rotate.js +4 -10
  32. package/es/handler/shim/touch_zoom_rotate.js +6 -16
  33. package/es/handler/tap/single_tap_recognizer.js +8 -31
  34. package/es/handler/tap/tap_drag_zoom.js +7 -15
  35. package/es/handler/tap/tap_recognizer.js +3 -11
  36. package/es/handler/tap/tap_zoom.js +1 -7
  37. package/es/handler/touch/touch_pan.js +4 -22
  38. package/es/handler/touch/touch_pitch.js +10 -27
  39. package/es/handler/touch/touch_rotate.js +8 -19
  40. package/es/handler/touch/touch_zoom.js +5 -18
  41. package/es/handler/touch/two_touch.js +19 -32
  42. package/es/hash.js +9 -31
  43. package/es/map.js +16 -78
  44. package/es/util.js +18 -26
  45. package/es/utils/Aabb.js +10 -31
  46. package/es/utils/dom.js +24 -58
  47. package/es/utils/performance.js +8 -7
  48. package/es/utils/primitives.js +13 -11
  49. package/es/utils/task_queue.js +6 -23
  50. package/lib/camera.js +90 -168
  51. package/lib/earthmap.js +11 -79
  52. package/lib/geo/edge_insets.js +3 -18
  53. package/lib/geo/lng_lat.js +5 -18
  54. package/lib/geo/lng_lat_bounds.js +4 -20
  55. package/lib/geo/mercator.js +1 -22
  56. package/lib/geo/point.js +0 -8
  57. package/lib/geo/simple.js +5 -24
  58. package/lib/geo/transform.js +123 -164
  59. package/lib/handler/blockable_map_event.js +6 -14
  60. package/lib/handler/box_zoom.js +8 -39
  61. package/lib/handler/click_zoom.js +0 -6
  62. package/lib/handler/events/event.js +0 -5
  63. package/lib/handler/events/index.js +0 -4
  64. package/lib/handler/events/map_mouse_event.js +0 -19
  65. package/lib/handler/events/map_touch_event.js +1 -20
  66. package/lib/handler/events/map_wheel_event.js +1 -16
  67. package/lib/handler/events/render_event.js +0 -19
  68. package/lib/handler/handler_inertia.js +4 -37
  69. package/lib/handler/handler_manager.js +55 -171
  70. package/lib/handler/handler_util.js +1 -3
  71. package/lib/handler/keyboard.js +1 -22
  72. package/lib/handler/map_event.js +2 -11
  73. package/lib/handler/mouse/index.js +0 -4
  74. package/lib/handler/mouse/mouse_handler.js +10 -27
  75. package/lib/handler/mouse/mousepan_handler.js +0 -17
  76. package/lib/handler/mouse/mousepitch_hander.js +0 -16
  77. package/lib/handler/mouse/mouserotate_hander.js +0 -16
  78. package/lib/handler/mouse/util.js +2 -6
  79. package/lib/handler/scroll_zoom.js +43 -77
  80. package/lib/handler/shim/dblclick_zoom.js +4 -10
  81. package/lib/handler/shim/drag_pan.js +4 -13
  82. package/lib/handler/shim/drag_rotate.js +4 -11
  83. package/lib/handler/shim/touch_zoom_rotate.js +6 -18
  84. package/lib/handler/tap/single_tap_recognizer.js +8 -33
  85. package/lib/handler/tap/tap_drag_zoom.js +6 -18
  86. package/lib/handler/tap/tap_recognizer.js +2 -17
  87. package/lib/handler/tap/tap_zoom.js +0 -9
  88. package/lib/handler/touch/index.js +0 -5
  89. package/lib/handler/touch/touch_pan.js +4 -25
  90. package/lib/handler/touch/touch_pitch.js +9 -31
  91. package/lib/handler/touch/touch_rotate.js +7 -24
  92. package/lib/handler/touch/touch_zoom.js +4 -23
  93. package/lib/handler/touch/two_touch.js +18 -35
  94. package/lib/hash.js +8 -35
  95. package/lib/index.js +0 -8
  96. package/lib/map.js +14 -94
  97. package/lib/util.js +16 -38
  98. package/lib/utils/Aabb.js +10 -34
  99. package/lib/utils/dom.js +22 -64
  100. package/lib/utils/performance.js +8 -9
  101. package/lib/utils/primitives.js +13 -16
  102. package/lib/utils/task_queue.js +6 -24
  103. 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
- maxZoom = options.maxZoom,
71
- minPitch = options.minPitch,
72
- maxPitch = options.maxPitch,
73
- renderWorldCopies = options.renderWorldCopies;
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
- } // eslint-disable-next-line @typescript-eslint/no-unused-vars
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
- } // eslint-disable-next-line @typescript-eslint/no-unused-vars
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
- lng = _this$transform$cente.lng,
100
- lat = _this$transform$cente.lat;
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( // @ts-ignore
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, // @ts-ignore
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); // When padding is being applied, Transform#centerPoint is changing continously,
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
- }, // @ts-ignore
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; // w₀: Initial visible span, measured in pixels at the initial scale.
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
- var w1 = w0 / scale; // Length of the flight path as projected onto the ground plane, measured in pixels from
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); // w<sub>m</sub>: Maximum visible span, measured in pixels with respect to the initial
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
- } // r₀: Zoom-out factor during ascent.
423
+ }
480
424
 
425
+ // r₀: Zoom-out factor during ascent.
426
+ var r0 = r(0);
481
427
 
482
- var r0 = r(0); // w(s): Returns the visible span on the ground, measured in pixels with respect to the
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
- }; // u(s): Returns the distance along the flight path as projected onto the ground plane,
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
- }; // S: Total length of the flight path, measured in ρ-screenfuls.
494
-
438
+ };
495
439
 
496
- var S = (r(1) - r0) / rho; // When u₀ = u₁, the optimal path doesn’t require both ascent and descent.
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; // @ts-ignore
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); // When padding is being applied, Transform#centerPoint is changing continously,
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( // @ts-ignore
567
- this.cameraForBoxAndBearing(this.transform.pointLocation(_point.default.convert(p0)), this.transform.pointLocation(_point.default.convert(p1)), bearing, // @ts-ignore
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); // @ts-ignore
575
-
576
- delete this.easeFrameId; // @ts-ignore
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; // @ts-ignore
586
-
521
+ var onEaseEnd = this.onEaseEnd;
522
+ // @ts-ignore
587
523
  delete this.onEaseEnd;
588
524
  onEaseEnd.call(this, easeId);
589
- } // if (!allowGestures) {
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
- } // @ts-ignore
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; // We want to calculate the upper right and lower left of the box defined by p0 and p1
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)); // Calculate zoom: consider the original bbox and padding.
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 - ( // @ts-ignore
752
- edgePadding.left + // @ts-ignore
753
- edgePadding.right + // @ts-ignore
754
- options.padding.left + // @ts-ignore
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 - ( // @ts-ignore
757
- edgePadding.top + // @ts-ignore
758
- edgePadding.bottom + // @ts-ignore
759
- options.padding.top + // @ts-ignore
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
- var zoom = Math.min(tr.scaleZoom(tr.scale * Math.min(scaleX, scaleY)), options.maxZoom); // Calculate center: apply the zoom, the configured offset, as well as offset that exists as a result of padding.
767
-
768
- var offset = _point.default.convert(options.offset); // @ts-ignore
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
- options = (0, _lodash.merge)(calculatedOptions, options); // Explictly remove the padding field because, calculatedOptions already accounts for padding by setting zoom and center accordingly.
792
-
793
- delete options.padding; // @ts-ignore
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;