angular-cesium
Version:
Angular library for working with Cesium.
64 lines (61 loc) • 6.61 kB
JavaScript
import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core';
import { PlonterService } from '../../services/plonter/plonter.service';
import { CoordinateConverter } from '../../services/coordinate-converter/coordinate-converter.service';
export class AcDefaultPlonterComponent {
constructor(plonterService, cd, geoConverter) {
this.plonterService = plonterService;
this.cd = cd;
this.geoConverter = geoConverter;
}
ngOnInit() {
this.plonterService.plonterChangeNotifier.subscribe(() => this.cd.detectChanges());
}
get plonterPosition() {
if (this.plonterService.plonterShown) {
const screenPos = this.plonterService.plonterClickPosition.endPosition;
return this.geoConverter.screenToCartesian3(screenPos);
}
}
chooseEntity(entity) {
this.plonterService.resolvePlonter(entity);
}
}
AcDefaultPlonterComponent.decorators = [
{ type: Component, args: [{
selector: 'ac-default-plonter',
template: `
<ac-html *ngIf="plonterService.plonterShown" [props]="{
position: plonterPosition
}">
<div class="plonter-context-menu">
<div *ngFor="let entity of plonterService.entitesToPlonter">
<div class="plonter-item" (click)="chooseEntity(entity)">{{ entity?.name || entity?.id }}
</div>
</div>
</div>
</ac-html>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [CoordinateConverter],
styles: [`
.plonter-context-menu {
background-color: rgba(250, 250, 250, 0.8);
box-shadow: 1px 1px 5px 0px rgba(0, 0, 0, 0.15);
}
.plonter-item {
cursor: pointer;
padding: 2px 15px;
text-align: start;
}
.plonter-item:hover {
background-color: rgba(0, 0, 0, 0.15);
}
`]
},] }
];
AcDefaultPlonterComponent.ctorParameters = () => [
{ type: PlonterService },
{ type: ChangeDetectorRef },
{ type: CoordinateConverter }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWMtZGVmYXVsdC1wbG9udGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY2VzaXVtL3NyYy9saWIvYW5ndWxhci1jZXNpdW0vY29tcG9uZW50cy9hYy1kZWZhdWx0LXBsb250ZXIvYWMtZGVmYXVsdC1wbG9udGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQXNDdkcsTUFBTSxPQUFPLHlCQUF5QjtJQUVwQyxZQUFtQixjQUE4QixFQUM3QixFQUFxQixFQUNyQixZQUFpQztRQUZsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDN0IsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQXFCO0lBQ3JELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRTtZQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQztZQUN2RSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7O1lBeERGLFNBQVMsU0FDUjtnQkFDRSxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0tBV1Q7Z0JBa0JELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzt5QkFsQnZCOzs7Ozs7Ozs7Ozs7Ozs7O0tBZ0JSO2FBR0Y7OztZQXJDTSxjQUFjO1lBRFcsaUJBQWlCO1lBRTFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGxvbnRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wbG9udGVyL3Bsb250ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvb3JkaW5hdGVDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb29yZGluYXRlLWNvbnZlcnRlci9jb29yZGluYXRlLWNvbnZlcnRlci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoXHJcbiAge1xyXG4gICAgc2VsZWN0b3I6ICdhYy1kZWZhdWx0LXBsb250ZXInLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgPGFjLWh0bWwgKm5nSWY9XCJwbG9udGVyU2VydmljZS5wbG9udGVyU2hvd25cIiBbcHJvcHNdPVwie1xyXG4gICAgICAgIHBvc2l0aW9uOiBwbG9udGVyUG9zaXRpb25cclxuICAgICAgfVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwbG9udGVyLWNvbnRleHQtbWVudVwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZW50aXR5IG9mIHBsb250ZXJTZXJ2aWNlLmVudGl0ZXNUb1Bsb250ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsb250ZXItaXRlbVwiIChjbGljayk9XCJjaG9vc2VFbnRpdHkoZW50aXR5KVwiPnt7IGVudGl0eT8ubmFtZSB8fCBlbnRpdHk/LmlkIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvYWMtaHRtbD5cclxuICAgIGAsXHJcbiAgICBzdHlsZXM6IFtgXHJcbiAgICAgICAgLnBsb250ZXItY29udGV4dC1tZW51IHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTAsIDI1MCwgMjUwLCAwLjgpO1xyXG4gICAgICAgICAgICBib3gtc2hhZG93OiAxcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5wbG9udGVyLWl0ZW0ge1xyXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDJweCAxNXB4O1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBzdGFydDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5wbG9udGVyLWl0ZW06aG92ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICBgXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29vcmRpbmF0ZUNvbnZlcnRlcl0sXHJcbiAgfVxyXG4pXHJcbmV4cG9ydCBjbGFzcyBBY0RlZmF1bHRQbG9udGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHBsb250ZXJTZXJ2aWNlOiBQbG9udGVyU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICBwcml2YXRlIGdlb0NvbnZlcnRlcjogQ29vcmRpbmF0ZUNvbnZlcnRlcikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnBsb250ZXJTZXJ2aWNlLnBsb250ZXJDaGFuZ2VOb3RpZmllci5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBsb250ZXJQb3NpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLnBsb250ZXJTZXJ2aWNlLnBsb250ZXJTaG93bikge1xyXG4gICAgICBjb25zdCBzY3JlZW5Qb3MgPSB0aGlzLnBsb250ZXJTZXJ2aWNlLnBsb250ZXJDbGlja1Bvc2l0aW9uLmVuZFBvc2l0aW9uO1xyXG4gICAgICByZXR1cm4gdGhpcy5nZW9Db252ZXJ0ZXIuc2NyZWVuVG9DYXJ0ZXNpYW4zKHNjcmVlblBvcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaG9vc2VFbnRpdHkoZW50aXR5OiBhbnkpIHtcclxuICAgIHRoaXMucGxvbnRlclNlcnZpY2UucmVzb2x2ZVBsb250ZXIoZW50aXR5KTtcclxuICB9XHJcbn1cclxuIl19