angular-cesium
Version:
Angular library for working with Cesium.
103 lines • 13.7 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Injectable } from '@angular/core';
/**
* The service manages `ac-map` instances. `ac-map` register itself to this service.
* This allows retrieval of maps provided services outside of `ac-map` scope.
*/
var MapsManagerService = /** @class */ (function () {
function MapsManagerService() {
this.defaultIdCounter = 0;
this._Maps = new Map();
this.eventRemoveCallbacks = [];
}
MapsManagerService.prototype.getMap = function (id) {
if (!id) {
return this.firstMap;
}
return this._Maps.get(id);
};
MapsManagerService.prototype._registerMap = function (id, acMap) {
if (!this.firstMap) {
this.firstMap = acMap;
}
var mapId = id ? id : this.generateDefaultId();
if (this._Maps.has(mapId)) {
throw new Error("Map with id: " + mapId + " already exist");
}
this._Maps.set(mapId, acMap);
return mapId;
};
MapsManagerService.prototype._removeMapById = function (id) {
return this._Maps.delete(id);
};
MapsManagerService.prototype.generateDefaultId = function () {
this.defaultIdCounter++;
return 'default-map-id-' + this.defaultIdCounter;
};
/**
* Binds multiple 2D map's cameras together.
* @param mapsConfiguration - binding options.
* mapId - the id of the maps to bind.
* sensitivity - the amount the camera position should change in order to sync other maps.
* bindZoom - should bind zoom level
*/
MapsManagerService.prototype.sync2DMapsCameras = function (mapsConfiguration) {
var _this = this;
var DEFAULT_SENSITIVITY = 0.01;
this.unsyncMapsCameras();
var maps = mapsConfiguration.map(function (config) {
var map = _this.getMap(config.id);
if (!map) {
throw new Error("Couldn't find map with id: " + config.id);
}
return { map: map, options: { sensitivity: config.sensitivity, bindZoom: config.bindZoom } };
});
maps.forEach(function (masterMapConfig) {
var masterMap = masterMapConfig.map;
var options = masterMapConfig.options;
var masterCamera = masterMap.getCameraService().getCamera();
var masterCameraCartographic = masterCamera.positionCartographic;
masterCamera.percentageChanged = options.sensitivity || DEFAULT_SENSITIVITY;
var removeCallback = masterCamera.changed.addEventListener(function () {
maps.forEach(function (slaveMapConfig) {
var slaveMap = slaveMapConfig.map;
var slaveMapOptions = slaveMapConfig.options;
if (slaveMap === masterMap) {
return;
}
var slaveCamera = slaveMap.getCameraService().getCamera();
var slaveCameraCartographic = slaveCamera.positionCartographic;
var position = Cesium.Ellipsoid.WGS84.cartographicToCartesian({
longitude: masterCameraCartographic.longitude,
latitude: masterCameraCartographic.latitude,
height: slaveMapOptions.bindZoom ? masterCameraCartographic.height : slaveCameraCartographic.height,
});
if (slaveMap.getCesiumViewer().scene.mode !== Cesium.SceneMode.MORPHING) {
slaveCamera.setView({
destination: position,
orientation: {
heading: slaveCamera.heading,
pitch: slaveCamera.pitch,
},
});
}
});
});
_this.eventRemoveCallbacks.push(removeCallback);
});
};
/**
* Unsyncs maps cameras
*/
MapsManagerService.prototype.unsyncMapsCameras = function () {
this.eventRemoveCallbacks.forEach(function (removeCallback) { return removeCallback(); });
this.eventRemoveCallbacks = [];
};
MapsManagerService = __decorate([
Injectable(),
__metadata("design:paramtypes", [])
], MapsManagerService);
return MapsManagerService;
}());
export { MapsManagerService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcy1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWNlc2l1bS8iLCJzb3VyY2VzIjpbImxpYi9hbmd1bGFyLWNlc2l1bS9zZXJ2aWNlcy9tYXBzLW1hbmFnZXIvbWFwcy1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0M7OztHQUdHO0FBRUg7SUFNRTtRQUxRLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQixVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7UUFFMUMseUJBQW9CLEdBQWUsRUFBRSxDQUFDO0lBRzlDLENBQUM7SUFFRCxtQ0FBTSxHQUFOLFVBQU8sRUFBVztRQUNoQixJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3RCO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQseUNBQVksR0FBWixVQUFhLEVBQVUsRUFBRSxLQUFxQjtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN2QjtRQUVELElBQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNqRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWdCLEtBQUssbUJBQWdCLENBQUMsQ0FBQztTQUN4RDtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixPQUFPLEtBQUss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QUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxLQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsOENBQWlCLEdBQWpCO1FBQ0UsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxVQUFBLGNBQWMsSUFBSSxPQUFBLGNBQWMsRUFBRSxFQUFoQixDQUFnQixDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBcEdVLGtCQUFrQjtRQUQ5QixVQUFVLEVBQUU7O09BQ0Esa0JBQWtCLENBcUc5QjtJQUFELHlCQUFDO0NBQUEsQUFyR0QsSUFxR0M7U0FyR1ksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNNYXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2FjLW1hcC9hYy1tYXAuY29tcG9uZW50JztcblxuLyoqXG4gKiAgVGhlIHNlcnZpY2UgbWFuYWdlcyBgYWMtbWFwYCBpbnN0YW5jZXMuIGBhYy1tYXBgIHJlZ2lzdGVyIGl0c2VsZiB0byB0aGlzIHNlcnZpY2UuXG4gKiAgVGhpcyBhbGxvd3MgcmV0cmlldmFsIG9mIG1hcHMgcHJvdmlkZWQgc2VydmljZXMgb3V0c2lkZSBvZiBgYWMtbWFwYCBzY29wZS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1hcHNNYW5hZ2VyU2VydmljZSB7XG4gIHByaXZhdGUgZGVmYXVsdElkQ291bnRlciA9IDA7XG4gIHByaXZhdGUgX01hcHMgPSBuZXcgTWFwPHN0cmluZywgQWNNYXBDb21wb25lbnQ+KCk7XG4gIHByaXZhdGUgZmlyc3RNYXA6IGFueTtcbiAgcHJpdmF0ZSBldmVudFJlbW92ZUNhbGxiYWNrczogRnVuY3Rpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgZ2V0TWFwKGlkPzogc3RyaW5nKTogQWNNYXBDb21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIGlmICghaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpcnN0TWFwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fTWFwcy5nZXQoaWQpO1xuICB9XG5cbiAgX3JlZ2lzdGVyTWFwKGlkOiBzdHJpbmcsIGFjTWFwOiBBY01hcENvbXBvbmVudCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmZpcnN0TWFwKSB7XG4gICAgICB0aGlzLmZpcnN0TWFwID0gYWNNYXA7XG4gICAgfVxuXG4gICAgY29uc3QgbWFwSWQgPSBpZCA/IGlkIDogdGhpcy5nZW5lcmF0ZURlZmF1bHRJZCgpO1xuICAgIGlmICh0aGlzLl9NYXBzLmhhcyhtYXBJZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWFwIHdpdGggaWQ6ICR7bWFwSWR9IGFscmVhZHkgZXhpc3RgKTtcbiAgICB9XG4gICAgdGhpcy5fTWFwcy5zZXQobWFwSWQsIGFjTWFwKTtcbiAgICByZXR1cm4gbWFwSWQ7XG4gIH1cblxuICBfcmVtb3ZlTWFwQnlJZChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX01hcHMuZGVsZXRlKGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVEZWZhdWx0SWQoKTogc3RyaW5nIHtcbiAgICB0aGlzLmRlZmF1bHRJZENvdW50ZXIrKztcbiAgICByZXR1cm4gJ2RlZmF1bHQtbWFwLWlkLScgKyB0aGlzLmRlZmF1bHRJZENvdW50ZXI7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgbXVsdGlwbGUgMkQgbWFwJ3MgY2FtZXJhcyB0b2dldGhlci5cbiAgICogQHBhcmFtIG1hcHNDb25maWd1cmF0aW9uIC0gYmluZGluZyBvcHRpb25zLlxuICAgKiBtYXBJZCAtIHRoZSBpZCBvZiB0aGUgbWFwcyB0byBiaW5kLlxuICAgKiBzZW5zaXRpdml0eSAtIHRoZSBhbW91bnQgdGhlIGNhbWVyYSBwb3NpdGlvbiBzaG91bGQgY2hhbmdlIGluIG9yZGVyIHRvIHN5bmMgb3RoZXIgbWFwcy5cbiAgICogYmluZFpvb20gLSBzaG91bGQgYmluZCB6b29tIGxldmVsXG4gICAqL1xuICBzeW5jMkRNYXBzQ2FtZXJhcyhtYXBzQ29uZmlndXJhdGlvbjogeyBpZDogc3RyaW5nOyBzZW5zaXRpdml0eT86IG51bWJlcjsgYmluZFpvb20/OiBib29sZWFuIH1bXSkge1xuICAgIGNvbnN0IERFRkFVTFRfU0VOU0lUSVZJVFkgPSAwLjAxO1xuICAgIHRoaXMudW5zeW5jTWFwc0NhbWVyYXMoKTtcbiAgICBjb25zdCBtYXBzOiB7IG1hcDogQWNNYXBDb21wb25lbnQ7IG9wdGlvbnM/OiB7IHNlbnNpdGl2aXR5PzogbnVtYmVyOyBiaW5kWm9vbT86IGJvb2xlYW4gfSB9W10gPSBtYXBzQ29uZmlndXJhdGlvbi5tYXAoY29uZmlnID0+IHtcbiAgICAgIGNvbnN0IG1hcCA9IHRoaXMuZ2V0TWFwKGNvbmZpZy5pZCk7XG4gICAgICBpZiAoIW1hcCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgbWFwIHdpdGggaWQ6ICR7Y29uZmlnLmlkfWApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge21hcCwgb3B0aW9uczoge3NlbnNpdGl2aXR5OiBjb25maWcuc2Vuc2l0aXZpdHksIGJpbmRab29tOiBjb25maWcuYmluZFpvb219fTtcbiAgICB9KTtcblxuICAgIG1hcHMuZm9yRWFjaChtYXN0ZXJNYXBDb25maWcgPT4ge1xuICAgICAgY29uc3QgbWFzdGVyTWFwID0gbWFzdGVyTWFwQ29uZmlnLm1hcDtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBtYXN0ZXJNYXBDb25maWcub3B0aW9ucztcbiAgICAgIGNvbnN0IG1hc3RlckNhbWVyYSA9IG1hc3Rlck1hcC5nZXRDYW1lcmFTZXJ2aWNlKCkuZ2V0Q2FtZXJhKCk7XG4gICAgICBjb25zdCBtYXN0ZXJDYW1lcmFDYXJ0b2dyYXBoaWMgPSBtYXN0ZXJDYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWM7XG4gICAgICBtYXN0ZXJDYW1lcmEucGVyY2VudGFnZUNoYW5nZWQgPSBvcHRpb25zLnNlbnNpdGl2aXR5IHx8IERFRkFVTFRfU0VOU0lUSVZJVFk7XG4gICAgICBjb25zdCByZW1vdmVDYWxsYmFjayA9IG1hc3RlckNhbWVyYS5jaGFuZ2VkLmFkZEV2ZW50TGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICBtYXBzLmZvckVhY2goc2xhdmVNYXBDb25maWcgPT4ge1xuICAgICAgICAgIGNvbnN0IHNsYXZlTWFwID0gc2xhdmVNYXBDb25maWcubWFwO1xuICAgICAgICAgIGNvbnN0IHNsYXZlTWFwT3B0aW9ucyA9IHNsYXZlTWFwQ29uZmlnLm9wdGlvbnM7XG4gICAgICAgICAgaWYgKHNsYXZlTWFwID09PSBtYXN0ZXJNYXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzbGF2ZUNhbWVyYSA9IHNsYXZlTWFwLmdldENhbWVyYVNlcnZpY2UoKS5nZXRDYW1lcmEoKTtcbiAgICAgICAgICBjb25zdCBzbGF2ZUNhbWVyYUNhcnRvZ3JhcGhpYyA9IHNsYXZlQ2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljO1xuICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gQ2VzaXVtLkVsbGlwc29pZC5XR1M4NC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbih7XG4gICAgICAgICAgICBsb25naXR1ZGU6IG1hc3RlckNhbWVyYUNhcnRvZ3JhcGhpYy5sb25naXR1ZGUsXG4gICAgICAgICAgICBsYXRpdHVkZTogbWFzdGVyQ2FtZXJhQ2FydG9ncmFwaGljLmxhdGl0dWRlLFxuICAgICAgICAgICAgaGVpZ2h0OiBzbGF2ZU1hcE9wdGlvbnMuYmluZFpvb20gPyBtYXN0ZXJDYW1lcmFDYXJ0b2dyYXBoaWMuaGVpZ2h0IDogc2xhdmVDYW1lcmFDYXJ0b2dyYXBoaWMuaGVpZ2h0LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHNsYXZlTWFwLmdldENlc2l1bVZpZXdlcigpLnNjZW5lLm1vZGUgIT09IENlc2l1bS5TY2VuZU1vZGUuTU9SUEhJTkcpIHtcbiAgICAgICAgICAgIHNsYXZlQ2FtZXJhLnNldFZpZXcoe1xuICAgICAgICAgICAgICBkZXN0aW5hdGlvbjogcG9zaXRpb24sXG4gICAgICAgICAgICAgIG9yaWVudGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgaGVhZGluZzogc2xhdmVDYW1lcmEuaGVhZGluZyxcbiAgICAgICAgICAgICAgICBwaXRjaDogc2xhdmVDYW1lcmEucGl0Y2gsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmV2ZW50UmVtb3ZlQ2FsbGJhY2tzLnB1c2gocmVtb3ZlQ2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc3luY3MgbWFwcyBjYW1lcmFzXG4gICAqL1xuICB1bnN5bmNNYXBzQ2FtZXJhcygpIHtcbiAgICB0aGlzLmV2ZW50UmVtb3ZlQ2FsbGJhY2tzLmZvckVhY2gocmVtb3ZlQ2FsbGJhY2sgPT4gcmVtb3ZlQ2FsbGJhY2soKSk7XG4gICAgdGhpcy5ldmVudFJlbW92ZUNhbGxiYWNrcyA9IFtdO1xuICB9XG59XG4iXX0=