@antv/l7-map 2.15.2 → 2.15.3
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 -23
- 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 -34
- 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
|
}, {
|
|
@@ -213,14 +189,16 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
213
189
|
}, {
|
|
214
190
|
key: "fitBounds",
|
|
215
191
|
value: function fitBounds(bounds, options, eventData) {
|
|
216
|
-
return this.fitInternal(
|
|
192
|
+
return this.fitInternal(
|
|
193
|
+
// @ts-ignore
|
|
217
194
|
this.cameraForBounds(bounds, options), options, eventData);
|
|
218
195
|
}
|
|
219
196
|
}, {
|
|
220
197
|
key: "cameraForBounds",
|
|
221
198
|
value: function cameraForBounds(bounds, options) {
|
|
222
199
|
bounds = _lng_lat_bounds.default.convert(bounds);
|
|
223
|
-
return this.cameraForBoxAndBearing(bounds.getNorthWest(), bounds.getSouthEast(), 0,
|
|
200
|
+
return this.cameraForBoxAndBearing(bounds.getNorthWest(), bounds.getSouthEast(), 0,
|
|
201
|
+
// @ts-ignore
|
|
224
202
|
options);
|
|
225
203
|
}
|
|
226
204
|
}, {
|
|
@@ -229,7 +207,6 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
229
207
|
if (Math.abs(this.getBearing()) < this.bearingSnap) {
|
|
230
208
|
return this.resetNorth(options, eventData);
|
|
231
209
|
}
|
|
232
|
-
|
|
233
210
|
return this;
|
|
234
211
|
}
|
|
235
212
|
}, {
|
|
@@ -242,58 +219,47 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
242
219
|
var zoomChanged = false;
|
|
243
220
|
var bearingChanged = false;
|
|
244
221
|
var pitchChanged = false;
|
|
245
|
-
|
|
246
222
|
if (options.zoom !== undefined && tr.zoom !== +options.zoom) {
|
|
247
223
|
zoomChanged = true;
|
|
248
224
|
tr.zoom = +options.zoom;
|
|
249
225
|
}
|
|
250
|
-
|
|
251
226
|
if (options.center !== undefined) {
|
|
252
227
|
tr.center = _lng_lat.default.convert(options.center);
|
|
253
228
|
}
|
|
254
|
-
|
|
255
229
|
if (options.bearing !== undefined && tr.bearing !== +options.bearing) {
|
|
256
230
|
bearingChanged = true;
|
|
257
231
|
tr.bearing = +options.bearing;
|
|
258
232
|
}
|
|
259
|
-
|
|
260
233
|
if (options.pitch !== undefined && tr.pitch !== +options.pitch) {
|
|
261
234
|
pitchChanged = true;
|
|
262
235
|
tr.pitch = +options.pitch;
|
|
263
236
|
}
|
|
264
|
-
|
|
265
237
|
if (options.padding !== undefined && !tr.isPaddingEqual(options.padding)) {
|
|
266
238
|
tr.padding = options.padding;
|
|
267
239
|
}
|
|
268
|
-
|
|
269
240
|
this.emit('movestart', new _event.Event('movestart', eventData));
|
|
270
241
|
this.emit('move', new _event.Event('move', eventData));
|
|
271
|
-
|
|
272
242
|
if (zoomChanged) {
|
|
273
243
|
this.emit('zoomstart', new _event.Event('zoomstart', eventData));
|
|
274
244
|
this.emit('zoom', new _event.Event('zoom', eventData));
|
|
275
245
|
this.emit('zoomend', new _event.Event('zoomend', eventData));
|
|
276
246
|
}
|
|
277
|
-
|
|
278
247
|
if (bearingChanged) {
|
|
279
248
|
this.emit('rotatestart', new _event.Event('rotatestart', eventData));
|
|
280
249
|
this.emit('rotate', new _event.Event('rotate', eventData));
|
|
281
250
|
this.emit('rotateend', new _event.Event('rotateend', eventData));
|
|
282
251
|
}
|
|
283
|
-
|
|
284
252
|
if (pitchChanged) {
|
|
285
253
|
this.emit('pitchstart', new _event.Event('pitchstart', eventData));
|
|
286
254
|
this.emit('pitch', new _event.Event('pitch', eventData));
|
|
287
255
|
this.emit('pitchend', new _event.Event('pitchend', eventData));
|
|
288
256
|
}
|
|
289
|
-
|
|
290
257
|
return this.emit('moveend', new _event.Event('moveend', eventData));
|
|
291
258
|
}
|
|
292
259
|
}, {
|
|
293
260
|
key: "easeTo",
|
|
294
261
|
value: function easeTo() {
|
|
295
262
|
var _this2 = this;
|
|
296
|
-
|
|
297
263
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
298
264
|
var eventData = arguments.length > 1 ? arguments[1] : undefined;
|
|
299
265
|
options = (0, _lodash.merge)({
|
|
@@ -301,11 +267,9 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
301
267
|
duration: 500,
|
|
302
268
|
easing: _util.ease
|
|
303
269
|
}, options);
|
|
304
|
-
|
|
305
270
|
if (options.animate === false || !options.essential && (0, _util.prefersReducedMotion)()) {
|
|
306
271
|
options.duration = 0;
|
|
307
272
|
}
|
|
308
|
-
|
|
309
273
|
var tr = this.transform;
|
|
310
274
|
var startZoom = this.getZoom();
|
|
311
275
|
var startBearing = this.getBearing();
|
|
@@ -315,26 +279,20 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
315
279
|
var bearing = options.bearing ? this.normalizeBearing(options.bearing, startBearing) : startBearing;
|
|
316
280
|
var pitch = options.pitch ? +options.pitch : startPitch;
|
|
317
281
|
var padding = options.padding ? options.padding : tr.padding;
|
|
318
|
-
|
|
319
282
|
var offsetAsPoint = _point.default.convert(options.offset);
|
|
320
|
-
|
|
321
283
|
var pointAtOffset = tr.centerPoint.add(offsetAsPoint);
|
|
322
284
|
var locationAtOffset = tr.pointLocation(pointAtOffset);
|
|
323
|
-
|
|
324
285
|
var center = _lng_lat.default.convert(options.center || locationAtOffset);
|
|
325
|
-
|
|
326
286
|
this.normalizeCenter(center);
|
|
327
287
|
var from = tr.project(locationAtOffset);
|
|
328
288
|
var delta = tr.project(center).sub(from);
|
|
329
289
|
var finalScale = tr.zoomScale(zoom - startZoom);
|
|
330
290
|
var around;
|
|
331
291
|
var aroundPoint;
|
|
332
|
-
|
|
333
292
|
if (options.around) {
|
|
334
293
|
around = _lng_lat.default.convert(options.around);
|
|
335
294
|
aroundPoint = tr.locationPoint(around);
|
|
336
295
|
}
|
|
337
|
-
|
|
338
296
|
var currently = {
|
|
339
297
|
moving: this.moving,
|
|
340
298
|
zooming: this.zooming,
|
|
@@ -352,22 +310,18 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
352
310
|
if (_this2.zooming) {
|
|
353
311
|
tr.zoom = (0, _util.interpolate)(startZoom, zoom, k);
|
|
354
312
|
}
|
|
355
|
-
|
|
356
313
|
if (_this2.rotating && _this2.rotateEnabled) {
|
|
357
314
|
tr.bearing = (0, _util.interpolate)(startBearing, bearing, k);
|
|
358
315
|
}
|
|
359
|
-
|
|
360
316
|
if (_this2.pitching && _this2.pitchEnabled) {
|
|
361
317
|
tr.pitch = (0, _util.interpolate)(startPitch, pitch, k);
|
|
362
318
|
}
|
|
363
|
-
|
|
364
319
|
if (_this2.padding) {
|
|
365
|
-
tr.interpolatePadding(startPadding, padding, k);
|
|
320
|
+
tr.interpolatePadding(startPadding, padding, k);
|
|
321
|
+
// When padding is being applied, Transform#centerPoint is changing continously,
|
|
366
322
|
// thus we need to recalculate offsetPoint every fra,e
|
|
367
|
-
|
|
368
323
|
pointAtOffset = tr.centerPoint.add(offsetAsPoint);
|
|
369
324
|
}
|
|
370
|
-
|
|
371
325
|
if (around) {
|
|
372
326
|
tr.setLocationAtPoint(around, aroundPoint);
|
|
373
327
|
} else {
|
|
@@ -377,11 +331,11 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
377
331
|
var newCenter = tr.unproject(from.add(delta.mult(k * speedup)).mult(scale));
|
|
378
332
|
tr.setLocationAtPoint(tr.renderWorldCopies ? newCenter.wrap() : newCenter, pointAtOffset);
|
|
379
333
|
}
|
|
380
|
-
|
|
381
334
|
_this2.fireMoveEvents(eventData);
|
|
382
335
|
}, function (interruptingEaseId) {
|
|
383
336
|
_this2.afterEase(eventData, interruptingEaseId);
|
|
384
|
-
},
|
|
337
|
+
},
|
|
338
|
+
// @ts-ignore
|
|
385
339
|
options);
|
|
386
340
|
return this;
|
|
387
341
|
}
|
|
@@ -389,16 +343,13 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
389
343
|
key: "flyTo",
|
|
390
344
|
value: function flyTo() {
|
|
391
345
|
var _this3 = this;
|
|
392
|
-
|
|
393
346
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
394
347
|
var eventData = arguments.length > 1 ? arguments[1] : undefined;
|
|
395
|
-
|
|
396
348
|
// Fall through to jumpTo if user has set prefers-reduced-motion
|
|
397
349
|
if (!options.essential && (0, _util.prefersReducedMotion)()) {
|
|
398
350
|
var coercedOptions = (0, _util.pick)(options, ['center', 'zoom', 'bearing', 'pitch', 'around']);
|
|
399
351
|
return this.jumpTo(coercedOptions, eventData);
|
|
400
352
|
}
|
|
401
|
-
|
|
402
353
|
this.stop();
|
|
403
354
|
options = (0, _lodash.merge)({
|
|
404
355
|
offset: [0, 0],
|
|
@@ -416,106 +367,95 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
416
367
|
var pitch = options.pitch ? +options.pitch : startPitch;
|
|
417
368
|
var padding = 'padding' in options ? options.padding : tr.padding;
|
|
418
369
|
var scale = tr.zoomScale(zoom - startZoom);
|
|
419
|
-
|
|
420
370
|
var offsetAsPoint = _point.default.convert(options.offset);
|
|
421
|
-
|
|
422
371
|
var pointAtOffset = tr.centerPoint.add(offsetAsPoint);
|
|
423
372
|
var locationAtOffset = tr.pointLocation(pointAtOffset);
|
|
424
|
-
|
|
425
373
|
var center = _lng_lat.default.convert(options.center || locationAtOffset);
|
|
426
|
-
|
|
427
374
|
this.normalizeCenter(center);
|
|
428
375
|
var from = tr.project(locationAtOffset);
|
|
429
376
|
var delta = tr.project(center).sub(from);
|
|
430
|
-
var rho = options.curve;
|
|
431
|
-
|
|
432
|
-
var w0 = Math.max(tr.width, tr.height); // w₁: Final visible span, measured in pixels with respect to the initial scale.
|
|
377
|
+
var rho = options.curve;
|
|
433
378
|
|
|
434
|
-
|
|
379
|
+
// w₀: Initial visible span, measured in pixels at the initial scale.
|
|
380
|
+
var w0 = Math.max(tr.width, tr.height);
|
|
381
|
+
// w₁: Final visible span, measured in pixels with respect to the initial scale.
|
|
382
|
+
var w1 = w0 / scale;
|
|
383
|
+
// Length of the flight path as projected onto the ground plane, measured in pixels from
|
|
435
384
|
// the world image origin at the initial scale.
|
|
436
|
-
|
|
437
385
|
var u1 = delta.mag();
|
|
438
|
-
|
|
439
386
|
if ('minZoom' in options) {
|
|
440
|
-
var minZoom = (0, _util.clamp)(Math.min(options.minZoom, startZoom, zoom), tr.minZoom, tr.maxZoom);
|
|
387
|
+
var minZoom = (0, _util.clamp)(Math.min(options.minZoom, startZoom, zoom), tr.minZoom, tr.maxZoom);
|
|
388
|
+
// w<sub>m</sub>: Maximum visible span, measured in pixels with respect to the initial
|
|
441
389
|
// scale.
|
|
442
|
-
|
|
443
390
|
var wMax = w0 / tr.zoomScale(minZoom - startZoom);
|
|
444
391
|
rho = Math.sqrt(wMax / u1 * 2);
|
|
445
|
-
}
|
|
446
|
-
|
|
392
|
+
}
|
|
447
393
|
|
|
394
|
+
// ρ²
|
|
448
395
|
var rho2 = rho * rho;
|
|
396
|
+
|
|
449
397
|
/**
|
|
450
398
|
* rᵢ: Returns the zoom-out factor at one end of the animation.
|
|
451
399
|
*
|
|
452
400
|
* @param i 0 for the ascent or 1 for the descent.
|
|
453
401
|
* @private
|
|
454
402
|
*/
|
|
455
|
-
|
|
456
403
|
function r(i) {
|
|
457
404
|
var b = (w1 * w1 - w0 * w0 + (i ? -1 : 1) * rho2 * rho2 * u1 * u1) / (2 * (i ? w1 : w0) * rho2 * u1);
|
|
458
405
|
return Math.log(Math.sqrt(b * b + 1) - b);
|
|
459
406
|
}
|
|
460
|
-
|
|
461
407
|
function sinh(n) {
|
|
462
408
|
return (Math.exp(n) - Math.exp(-n)) / 2;
|
|
463
409
|
}
|
|
464
|
-
|
|
465
410
|
function cosh(n) {
|
|
466
411
|
return (Math.exp(n) + Math.exp(-n)) / 2;
|
|
467
412
|
}
|
|
468
|
-
|
|
469
413
|
function tanh(n) {
|
|
470
414
|
return sinh(n) / cosh(n);
|
|
471
|
-
}
|
|
415
|
+
}
|
|
472
416
|
|
|
417
|
+
// r₀: Zoom-out factor during ascent.
|
|
418
|
+
var r0 = r(0);
|
|
473
419
|
|
|
474
|
-
|
|
420
|
+
// w(s): Returns the visible span on the ground, measured in pixels with respect to the
|
|
475
421
|
// initial scale. Assumes an angular field of view of 2 arctan ½ ≈ 53°.
|
|
476
|
-
|
|
477
422
|
var w = function w(s) {
|
|
478
423
|
return cosh(r0) / cosh(r0 + rho * s);
|
|
479
|
-
};
|
|
480
|
-
// measured in pixels from the world image origin at the initial scale.
|
|
481
|
-
|
|
424
|
+
};
|
|
482
425
|
|
|
426
|
+
// u(s): Returns the distance along the flight path as projected onto the ground plane,
|
|
427
|
+
// measured in pixels from the world image origin at the initial scale.
|
|
483
428
|
var u = function u(s) {
|
|
484
429
|
return w0 * ((cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2) / u1;
|
|
485
|
-
};
|
|
486
|
-
|
|
430
|
+
};
|
|
487
431
|
|
|
488
|
-
|
|
432
|
+
// S: Total length of the flight path, measured in ρ-screenfuls.
|
|
433
|
+
var S = (r(1) - r0) / rho;
|
|
489
434
|
|
|
435
|
+
// When u₀ = u₁, the optimal path doesn’t require both ascent and descent.
|
|
490
436
|
if (Math.abs(u1) < 0.000001 || !isFinite(S)) {
|
|
491
437
|
// Perform a more or less instantaneous transition if the path is too short.
|
|
492
438
|
if (Math.abs(w0 - w1) < 0.000001) {
|
|
493
439
|
return this.easeTo(options, eventData);
|
|
494
440
|
}
|
|
495
|
-
|
|
496
441
|
var k = w1 < w0 ? -1 : 1;
|
|
497
442
|
S = Math.abs(Math.log(w1 / w0)) / rho;
|
|
498
|
-
|
|
499
443
|
u = function u() {
|
|
500
444
|
return 0;
|
|
501
445
|
};
|
|
502
|
-
|
|
503
446
|
w = function w(s) {
|
|
504
447
|
return Math.exp(k * rho * s);
|
|
505
448
|
};
|
|
506
449
|
}
|
|
507
|
-
|
|
508
450
|
if ('duration' in options) {
|
|
509
451
|
options.duration = +options.duration;
|
|
510
452
|
} else {
|
|
511
453
|
var V = 'screenSpeed' in options ? +options.screenSpeed / rho : +options.speed;
|
|
512
454
|
options.duration = 1000 * S / V;
|
|
513
455
|
}
|
|
514
|
-
|
|
515
456
|
if (options.maxDuration && options.duration > options.maxDuration) {
|
|
516
457
|
options.duration = 0;
|
|
517
458
|
}
|
|
518
|
-
|
|
519
459
|
this.zooming = true;
|
|
520
460
|
this.rotating = startBearing !== bearing;
|
|
521
461
|
this.pitching = pitch !== startPitch;
|
|
@@ -523,29 +463,24 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
523
463
|
this.prepareEase(eventData, false);
|
|
524
464
|
this.ease(function (k) {
|
|
525
465
|
// s: The distance traveled along the flight path, measured in ρ-screenfuls.
|
|
526
|
-
var s = k * S;
|
|
527
|
-
|
|
466
|
+
var s = k * S;
|
|
467
|
+
// @ts-ignore
|
|
528
468
|
var easeScale = 1 / w(s);
|
|
529
469
|
tr.zoom = k === 1 ? zoom : startZoom + tr.scaleZoom(easeScale);
|
|
530
|
-
|
|
531
470
|
if (_this3.rotating) {
|
|
532
471
|
tr.bearing = (0, _util.interpolate)(startBearing, bearing, k);
|
|
533
472
|
}
|
|
534
|
-
|
|
535
473
|
if (_this3.pitching) {
|
|
536
474
|
tr.pitch = (0, _util.interpolate)(startPitch, pitch, k);
|
|
537
475
|
}
|
|
538
|
-
|
|
539
476
|
if (_this3.padding) {
|
|
540
|
-
tr.interpolatePadding(startPadding, padding, k);
|
|
477
|
+
tr.interpolatePadding(startPadding, padding, k);
|
|
478
|
+
// When padding is being applied, Transform#centerPoint is changing continously,
|
|
541
479
|
// thus we need to recalculate offsetPoint every frame
|
|
542
|
-
|
|
543
480
|
pointAtOffset = tr.centerPoint.add(offsetAsPoint);
|
|
544
481
|
}
|
|
545
|
-
|
|
546
482
|
var newCenter = k === 1 ? center : tr.unproject(from.add(delta.mult(u(s))).mult(easeScale));
|
|
547
483
|
tr.setLocationAtPoint(tr.renderWorldCopies ? newCenter.wrap() : newCenter, pointAtOffset);
|
|
548
|
-
|
|
549
484
|
_this3.fireMoveEvents(eventData);
|
|
550
485
|
}, function () {
|
|
551
486
|
return _this3.afterEase(eventData);
|
|
@@ -555,35 +490,35 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
555
490
|
}, {
|
|
556
491
|
key: "fitScreenCoordinates",
|
|
557
492
|
value: function fitScreenCoordinates(p0, p1, bearing, options, eventData) {
|
|
558
|
-
return this.fitInternal(
|
|
559
|
-
|
|
493
|
+
return this.fitInternal(
|
|
494
|
+
// @ts-ignore
|
|
495
|
+
this.cameraForBoxAndBearing(this.transform.pointLocation(_point.default.convert(p0)), this.transform.pointLocation(_point.default.convert(p1)), bearing,
|
|
496
|
+
// @ts-ignore
|
|
560
497
|
options), options, eventData);
|
|
561
498
|
}
|
|
562
499
|
}, {
|
|
563
500
|
key: "stop",
|
|
564
501
|
value: function stop(allowGestures, easeId) {
|
|
565
502
|
if (this.easeFrameId) {
|
|
566
|
-
this.cancelRenderFrame(this.easeFrameId);
|
|
567
|
-
|
|
568
|
-
delete this.easeFrameId;
|
|
569
|
-
|
|
503
|
+
this.cancelRenderFrame(this.easeFrameId);
|
|
504
|
+
// @ts-ignore
|
|
505
|
+
delete this.easeFrameId;
|
|
506
|
+
// @ts-ignore
|
|
570
507
|
delete this.onEaseFrame;
|
|
571
508
|
}
|
|
572
|
-
|
|
573
509
|
if (this.onEaseEnd) {
|
|
574
510
|
// The _onEaseEnd function might emit events which trigger new
|
|
575
511
|
// animation, which sets a new _onEaseEnd. Ensure we don't delete
|
|
576
512
|
// it unintentionally.
|
|
577
|
-
var onEaseEnd = this.onEaseEnd;
|
|
578
|
-
|
|
513
|
+
var onEaseEnd = this.onEaseEnd;
|
|
514
|
+
// @ts-ignore
|
|
579
515
|
delete this.onEaseEnd;
|
|
580
516
|
onEaseEnd.call(this, easeId);
|
|
581
|
-
}
|
|
517
|
+
}
|
|
518
|
+
// if (!allowGestures) {
|
|
582
519
|
// const handlers = (this: any).handlers;
|
|
583
520
|
// if (handlers) handlers.stop();
|
|
584
521
|
// }
|
|
585
|
-
|
|
586
|
-
|
|
587
522
|
return this;
|
|
588
523
|
}
|
|
589
524
|
}, {
|
|
@@ -591,26 +526,21 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
591
526
|
value: function normalizeBearing(bearing, currentBearing) {
|
|
592
527
|
bearing = (0, _util.wrap)(bearing, -180, 180);
|
|
593
528
|
var diff = Math.abs(bearing - currentBearing);
|
|
594
|
-
|
|
595
529
|
if (Math.abs(bearing - 360 - currentBearing) < diff) {
|
|
596
530
|
bearing -= 360;
|
|
597
531
|
}
|
|
598
|
-
|
|
599
532
|
if (Math.abs(bearing + 360 - currentBearing) < diff) {
|
|
600
533
|
bearing += 360;
|
|
601
534
|
}
|
|
602
|
-
|
|
603
535
|
return bearing;
|
|
604
536
|
}
|
|
605
537
|
}, {
|
|
606
538
|
key: "normalizeCenter",
|
|
607
539
|
value: function normalizeCenter(center) {
|
|
608
540
|
var tr = this.transform;
|
|
609
|
-
|
|
610
541
|
if (!tr.renderWorldCopies || tr.lngRange) {
|
|
611
542
|
return;
|
|
612
543
|
}
|
|
613
|
-
|
|
614
544
|
var delta = center.lng - tr.center.lng;
|
|
615
545
|
center.lng += delta > 180 ? -360 : delta < -180 ? 360 : 0;
|
|
616
546
|
}
|
|
@@ -618,15 +548,12 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
618
548
|
key: "fireMoveEvents",
|
|
619
549
|
value: function fireMoveEvents(eventData) {
|
|
620
550
|
this.emit('move', new _event.Event('move', eventData));
|
|
621
|
-
|
|
622
551
|
if (this.zooming) {
|
|
623
552
|
this.emit('zoom', new _event.Event('zoom', eventData));
|
|
624
553
|
}
|
|
625
|
-
|
|
626
554
|
if (this.rotating) {
|
|
627
555
|
this.emit('rotate', new _event.Event('rotate', eventData));
|
|
628
556
|
}
|
|
629
|
-
|
|
630
557
|
if (this.pitching) {
|
|
631
558
|
this.emit('rotate', new _event.Event('pitch', eventData));
|
|
632
559
|
}
|
|
@@ -637,19 +564,15 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
637
564
|
var noMoveStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
638
565
|
var currently = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
639
566
|
this.moving = true;
|
|
640
|
-
|
|
641
567
|
if (!noMoveStart && !currently.moving) {
|
|
642
568
|
this.emit('movestart', new _event.Event('movestart', eventData));
|
|
643
569
|
}
|
|
644
|
-
|
|
645
570
|
if (this.zooming && !currently.zooming) {
|
|
646
571
|
this.emit('zoomstart', new _event.Event('zoomstart', eventData));
|
|
647
572
|
}
|
|
648
|
-
|
|
649
573
|
if (this.rotating && !currently.rotating) {
|
|
650
574
|
this.emit('rotatestart', new _event.Event('rotatestart', eventData));
|
|
651
575
|
}
|
|
652
|
-
|
|
653
576
|
if (this.pitching && !currently.pitching) {
|
|
654
577
|
this.emit('pitchstart', new _event.Event('pitchstart', eventData));
|
|
655
578
|
}
|
|
@@ -661,9 +584,8 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
661
584
|
// the same id then don't fire any events to avoid extra start/stop events
|
|
662
585
|
if (this.easeId && easeId && this.easeId === easeId) {
|
|
663
586
|
return;
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
|
|
587
|
+
}
|
|
588
|
+
// @ts-ignore
|
|
667
589
|
delete this.easeId;
|
|
668
590
|
var wasZooming = this.zooming;
|
|
669
591
|
var wasRotating = this.rotating;
|
|
@@ -673,19 +595,15 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
673
595
|
this.rotating = false;
|
|
674
596
|
this.pitching = false;
|
|
675
597
|
this.padding = false;
|
|
676
|
-
|
|
677
598
|
if (wasZooming) {
|
|
678
599
|
this.emit('zoomend', new _event.Event('zoomend', eventData));
|
|
679
600
|
}
|
|
680
|
-
|
|
681
601
|
if (wasRotating) {
|
|
682
602
|
this.emit('rotateend', new _event.Event('rotateend', eventData));
|
|
683
603
|
}
|
|
684
|
-
|
|
685
604
|
if (wasPitching) {
|
|
686
605
|
this.emit('pitchend', new _event.Event('pitchend', eventData));
|
|
687
606
|
}
|
|
688
|
-
|
|
689
607
|
this.emit('moveend', new _event.Event('moveend', eventData));
|
|
690
608
|
}
|
|
691
609
|
}, {
|
|
@@ -716,7 +634,6 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
716
634
|
offset: [0, 0],
|
|
717
635
|
maxZoom: this.transform.maxZoom
|
|
718
636
|
}, options);
|
|
719
|
-
|
|
720
637
|
if (typeof options.padding === 'number') {
|
|
721
638
|
var p = options.padding;
|
|
722
639
|
options.padding = {
|
|
@@ -726,42 +643,49 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
726
643
|
left: p
|
|
727
644
|
};
|
|
728
645
|
}
|
|
729
|
-
|
|
730
646
|
options.padding = (0, _lodash.merge)(defaultPadding, options.padding);
|
|
731
647
|
var tr = this.transform;
|
|
732
|
-
var edgePadding = tr.padding;
|
|
733
|
-
// in a coordinate system rotate to match the destination bearing.
|
|
648
|
+
var edgePadding = tr.padding;
|
|
734
649
|
|
|
650
|
+
// We want to calculate the upper right and lower left of the box defined by p0 and p1
|
|
651
|
+
// in a coordinate system rotate to match the destination bearing.
|
|
735
652
|
var p0world = tr.project(_lng_lat.default.convert(p0));
|
|
736
653
|
var p1world = tr.project(_lng_lat.default.convert(p1));
|
|
737
654
|
var p0rotated = p0world.rotate(-bearing * Math.PI / 180);
|
|
738
655
|
var p1rotated = p1world.rotate(-bearing * Math.PI / 180);
|
|
739
656
|
var upperRight = new _point.default(Math.max(p0rotated.x, p1rotated.x), Math.max(p0rotated.y, p1rotated.y));
|
|
740
|
-
var lowerLeft = new _point.default(Math.min(p0rotated.x, p1rotated.x), Math.min(p0rotated.y, p1rotated.y));
|
|
657
|
+
var lowerLeft = new _point.default(Math.min(p0rotated.x, p1rotated.x), Math.min(p0rotated.y, p1rotated.y));
|
|
741
658
|
|
|
659
|
+
// Calculate zoom: consider the original bbox and padding.
|
|
742
660
|
var size = upperRight.sub(lowerLeft);
|
|
743
|
-
var scaleX = (tr.width - (
|
|
744
|
-
|
|
745
|
-
edgePadding.
|
|
746
|
-
|
|
661
|
+
var scaleX = (tr.width - (
|
|
662
|
+
// @ts-ignore
|
|
663
|
+
edgePadding.left +
|
|
664
|
+
// @ts-ignore
|
|
665
|
+
edgePadding.right +
|
|
666
|
+
// @ts-ignore
|
|
667
|
+
options.padding.left +
|
|
668
|
+
// @ts-ignore
|
|
747
669
|
options.padding.right)) / size.x;
|
|
748
|
-
var scaleY = (tr.height - (
|
|
749
|
-
|
|
750
|
-
edgePadding.
|
|
751
|
-
|
|
670
|
+
var scaleY = (tr.height - (
|
|
671
|
+
// @ts-ignore
|
|
672
|
+
edgePadding.top +
|
|
673
|
+
// @ts-ignore
|
|
674
|
+
edgePadding.bottom +
|
|
675
|
+
// @ts-ignore
|
|
676
|
+
options.padding.top +
|
|
677
|
+
// @ts-ignore
|
|
752
678
|
options.padding.bottom)) / size.y;
|
|
753
|
-
|
|
754
679
|
if (scaleY < 0 || scaleX < 0) {
|
|
755
680
|
return;
|
|
756
681
|
}
|
|
682
|
+
var zoom = Math.min(tr.scaleZoom(tr.scale * Math.min(scaleX, scaleY)), options.maxZoom);
|
|
757
683
|
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
var paddingOffsetX = (options.padding.left - options.padding.right) / 2; // @ts-ignore
|
|
764
|
-
|
|
684
|
+
// Calculate center: apply the zoom, the configured offset, as well as offset that exists as a result of padding.
|
|
685
|
+
var offset = _point.default.convert(options.offset);
|
|
686
|
+
// @ts-ignore
|
|
687
|
+
var paddingOffsetX = (options.padding.left - options.padding.right) / 2;
|
|
688
|
+
// @ts-ignore
|
|
765
689
|
var paddingOffsetY = (options.padding.top - options.padding.bottom) / 2;
|
|
766
690
|
var offsetAtInitialZoom = new _point.default(offset.x + paddingOffsetX, offset.y + paddingOffsetY);
|
|
767
691
|
var offsetAtFinalZoom = offsetAtInitialZoom.mult(tr.scale / tr.zoomScale(zoom));
|
|
@@ -779,15 +703,13 @@ var Camera = /*#__PURE__*/function (_EventEmitter) {
|
|
|
779
703
|
if (!calculatedOptions) {
|
|
780
704
|
return this;
|
|
781
705
|
}
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
706
|
+
options = (0, _lodash.merge)(calculatedOptions, options);
|
|
707
|
+
// Explictly remove the padding field because, calculatedOptions already accounts for padding by setting zoom and center accordingly.
|
|
708
|
+
delete options.padding;
|
|
709
|
+
// @ts-ignore
|
|
787
710
|
return options.linear ? this.easeTo(options, eventData) : this.flyTo(options, eventData);
|
|
788
711
|
}
|
|
789
712
|
}]);
|
|
790
713
|
return Camera;
|
|
791
714
|
}(_eventemitter.EventEmitter);
|
|
792
|
-
|
|
793
715
|
exports.default = Camera;
|