UNPKG

angular-cesium

Version:
65 lines 9.87 kB
import { __decorate, __metadata } from "tslib"; import { Injectable } from '@angular/core'; import { CesiumService } from '../../cesium/cesium.service'; import { PrimitivesDrawerService } from '../primitives-drawer/primitives-drawer.service'; import { GeoUtilsService } from '../../geo-utils/geo-utils.service'; /** + This drawer is responsible for drawing an arc over the Cesium map. + This implementation uses simple PolylineGeometry and Primitive parameters. + This doesn't allow us to change the position, color, etc.. of the arc but setShow only. */ let ArcDrawerService = class ArcDrawerService extends PrimitivesDrawerService { constructor(cesiumService) { super(Cesium.PolylineCollection, cesiumService); } _calculateArcPositions(cesiumProps) { const quality = cesiumProps.quality || 18; const delta = (cesiumProps.delta) / quality; const pointsArray = []; for (let i = 0; i < quality + 1; ++i) { const point = GeoUtilsService.pointByLocationDistanceAndAzimuth(cesiumProps.center, cesiumProps.radius, cesiumProps.angle + delta * i, true); pointsArray.push(point); } return pointsArray; } _calculateTriangle(cesiumProps) { return [ cesiumProps.center, GeoUtilsService.pointByLocationDistanceAndAzimuth(cesiumProps.center, cesiumProps.radius, cesiumProps.angle, true) ]; } _calculateArc(cesiumProps) { const arcPoints = this._calculateArcPositions(cesiumProps); return cesiumProps.drawEdges ? arcPoints.concat(this._calculateTriangle(cesiumProps)) : arcPoints; } add(cesiumProps) { cesiumProps.positions = this._calculateArc(cesiumProps); if (cesiumProps.color) { const material = Cesium.Material.fromType('Color'); material.uniforms.color = cesiumProps.color; cesiumProps.material = material; } return this._cesiumCollection.add(cesiumProps); } update(primitive, cesiumProps) { if (!cesiumProps.constantColor && cesiumProps.color && !primitive.material.uniforms.color.equals(cesiumProps.color)) { primitive.material.uniforms.color = cesiumProps.color; } primitive.width = cesiumProps.width !== undefined ? cesiumProps.width : primitive.width; primitive.show = cesiumProps.show !== undefined ? cesiumProps.show : primitive.show; primitive.distanceDisplayCondition = cesiumProps.distanceDisplayCondition !== undefined ? cesiumProps.distanceDisplayCondition : primitive.distanceDisplayCondition; primitive.positions = this._calculateArc(cesiumProps); return primitive; } }; ArcDrawerService.ctorParameters = () => [ { type: CesiumService } ]; ArcDrawerService = __decorate([ Injectable(), __metadata("design:paramtypes", [CesiumService]) ], ArcDrawerService); export { ArcDrawerService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjLWRyYXdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1jZXNpdW0vIiwic291cmNlcyI6WyJsaWIvYW5ndWxhci1jZXNpdW0vc2VydmljZXMvZHJhd2Vycy9hcmMtZHJhd2VyL2FyYy1kcmF3ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXBFOzs7O0dBSUc7QUFHSCxJQUFhLGdCQUFnQixHQUE3QixNQUFhLGdCQUFpQixTQUFRLHVCQUF1QjtJQUMzRCxZQUFZLGFBQTRCO1FBQ3RDLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELHNCQUFzQixDQUFDLFdBQWdCO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUM1QyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxLQUFLLEdBQ1QsZUFBZSxDQUFDLGlDQUFpQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxXQUFnQjtRQUNqQyxPQUFPO1lBQ0wsV0FBVyxDQUFDLE1BQU07WUFDbEIsZUFBZSxDQUFDLGlDQUFpQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztTQUNuSCxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxXQUFnQjtRQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0QsT0FBTyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDcEcsQ0FBQztJQUVELEdBQUcsQ0FBQyxXQUFnQjtRQUNsQixXQUFXLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEQsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFO1lBQ3JCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDNUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDakM7UUFFRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFjLEVBQUUsV0FBZ0I7UUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLElBQUksV0FBVyxDQUFDLEtBQUs7WUFDakQsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5RCxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztTQUN2RDtRQUNELFNBQVMsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDeEYsU0FBUyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNwRixTQUFTLENBQUMsd0JBQXdCLEdBQUcsV0FBVyxDQUFDLHdCQUF3QixLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZGLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDO1FBQzVFLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV0RCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0YsQ0FBQTs7WUFyRDRCLGFBQWE7O0FBRDdCLGdCQUFnQjtJQUQ1QixVQUFVLEVBQUU7cUNBRWdCLGFBQWE7R0FEN0IsZ0JBQWdCLENBc0Q1QjtTQXREWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZXNpdW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2VzaXVtL2Nlc2l1bS5zZXJ2aWNlJztcbmltcG9ydCB7IFByaW1pdGl2ZXNEcmF3ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbWl0aXZlcy1kcmF3ZXIvcHJpbWl0aXZlcy1kcmF3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBHZW9VdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9nZW8tdXRpbHMvZ2VvLXV0aWxzLnNlcnZpY2UnO1xuXG4vKipcbiArICBUaGlzIGRyYXdlciBpcyByZXNwb25zaWJsZSBmb3IgZHJhd2luZyBhbiBhcmMgb3ZlciB0aGUgQ2VzaXVtIG1hcC5cbiArICBUaGlzIGltcGxlbWVudGF0aW9uIHVzZXMgc2ltcGxlIFBvbHlsaW5lR2VvbWV0cnkgYW5kIFByaW1pdGl2ZSBwYXJhbWV0ZXJzLlxuICsgIFRoaXMgZG9lc24ndCBhbGxvdyB1cyB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uLCBjb2xvciwgZXRjLi4gb2YgdGhlIGFyYyBidXQgc2V0U2hvdyBvbmx5LlxuICovXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcmNEcmF3ZXJTZXJ2aWNlIGV4dGVuZHMgUHJpbWl0aXZlc0RyYXdlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihjZXNpdW1TZXJ2aWNlOiBDZXNpdW1TZXJ2aWNlKSB7XG4gICAgc3VwZXIoQ2VzaXVtLlBvbHlsaW5lQ29sbGVjdGlvbiwgY2VzaXVtU2VydmljZSk7XG4gIH1cblxuICBfY2FsY3VsYXRlQXJjUG9zaXRpb25zKGNlc2l1bVByb3BzOiBhbnkpIHtcbiAgICBjb25zdCBxdWFsaXR5ID0gY2VzaXVtUHJvcHMucXVhbGl0eSB8fCAxODtcbiAgICBjb25zdCBkZWx0YSA9IChjZXNpdW1Qcm9wcy5kZWx0YSkgLyBxdWFsaXR5O1xuICAgIGNvbnN0IHBvaW50c0FycmF5ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWFsaXR5ICsgMTsgKytpKSB7XG4gICAgICBjb25zdCBwb2ludCA9XG4gICAgICAgIEdlb1V0aWxzU2VydmljZS5wb2ludEJ5TG9jYXRpb25EaXN0YW5jZUFuZEF6aW11dGgoY2VzaXVtUHJvcHMuY2VudGVyLCBjZXNpdW1Qcm9wcy5yYWRpdXMsIGNlc2l1bVByb3BzLmFuZ2xlICsgZGVsdGEgKiBpLCB0cnVlKTtcbiAgICAgIHBvaW50c0FycmF5LnB1c2gocG9pbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBwb2ludHNBcnJheTtcbiAgfVxuXG4gIF9jYWxjdWxhdGVUcmlhbmdsZShjZXNpdW1Qcm9wczogYW55KSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGNlc2l1bVByb3BzLmNlbnRlcixcbiAgICAgIEdlb1V0aWxzU2VydmljZS5wb2ludEJ5TG9jYXRpb25EaXN0YW5jZUFuZEF6aW11dGgoY2VzaXVtUHJvcHMuY2VudGVyLCBjZXNpdW1Qcm9wcy5yYWRpdXMsIGNlc2l1bVByb3BzLmFuZ2xlLCB0cnVlKVxuICAgIF07XG4gIH1cblxuICBfY2FsY3VsYXRlQXJjKGNlc2l1bVByb3BzOiBhbnkpIHtcbiAgICBjb25zdCBhcmNQb2ludHMgPSB0aGlzLl9jYWxjdWxhdGVBcmNQb3NpdGlvbnMoY2VzaXVtUHJvcHMpO1xuICAgIHJldHVybiBjZXNpdW1Qcm9wcy5kcmF3RWRnZXMgPyBhcmNQb2ludHMuY29uY2F0KHRoaXMuX2NhbGN1bGF0ZVRyaWFuZ2xlKGNlc2l1bVByb3BzKSkgOiBhcmNQb2ludHM7XG4gIH1cblxuICBhZGQoY2VzaXVtUHJvcHM6IGFueSk6IGFueSB7XG4gICAgY2VzaXVtUHJvcHMucG9zaXRpb25zID0gdGhpcy5fY2FsY3VsYXRlQXJjKGNlc2l1bVByb3BzKTtcbiAgICBpZiAoY2VzaXVtUHJvcHMuY29sb3IpIHtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gQ2VzaXVtLk1hdGVyaWFsLmZyb21UeXBlKCdDb2xvcicpO1xuICAgICAgbWF0ZXJpYWwudW5pZm9ybXMuY29sb3IgPSBjZXNpdW1Qcm9wcy5jb2xvcjtcbiAgICAgIGNlc2l1bVByb3BzLm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Nlc2l1bUNvbGxlY3Rpb24uYWRkKGNlc2l1bVByb3BzKTtcbiAgfVxuXG4gIHVwZGF0ZShwcmltaXRpdmU6IGFueSwgY2VzaXVtUHJvcHM6IGFueSkge1xuICAgIGlmICghY2VzaXVtUHJvcHMuY29uc3RhbnRDb2xvciAmJiBjZXNpdW1Qcm9wcy5jb2xvciAmJlxuICAgICAgIXByaW1pdGl2ZS5tYXRlcmlhbC51bmlmb3Jtcy5jb2xvci5lcXVhbHMoY2VzaXVtUHJvcHMuY29sb3IpKSB7XG4gICAgICBwcmltaXRpdmUubWF0ZXJpYWwudW5pZm9ybXMuY29sb3IgPSBjZXNpdW1Qcm9wcy5jb2xvcjtcbiAgICB9XG4gICAgcHJpbWl0aXZlLndpZHRoID0gY2VzaXVtUHJvcHMud2lkdGggIT09IHVuZGVmaW5lZCA/IGNlc2l1bVByb3BzLndpZHRoIDogcHJpbWl0aXZlLndpZHRoO1xuICAgIHByaW1pdGl2ZS5zaG93ID0gY2VzaXVtUHJvcHMuc2hvdyAhPT0gdW5kZWZpbmVkID8gY2VzaXVtUHJvcHMuc2hvdyA6IHByaW1pdGl2ZS5zaG93O1xuICAgIHByaW1pdGl2ZS5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24gPSBjZXNpdW1Qcm9wcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24gIT09IHVuZGVmaW5lZCA/XG4gICAgICBjZXNpdW1Qcm9wcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24gOiBwcmltaXRpdmUuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uO1xuICAgIHByaW1pdGl2ZS5wb3NpdGlvbnMgPSB0aGlzLl9jYWxjdWxhdGVBcmMoY2VzaXVtUHJvcHMpO1xuXG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxufVxuIl19