@greenmice/ngx-cesium
Version:
Angular library for working with Cesium.
85 lines • 10.7 kB
JavaScript
export class HtmlPrimitive {
constructor(options, collection = null) {
if (typeof options !== 'object') {
throw new Error('HtmlPrimitive ERROR: invalid html options!');
}
this.scene = options.scene;
this._mapContainer = options.mapContainer;
this.show = options.show || true;
this.position = options.position;
this.pixelOffset = options.pixelOffset;
this.element = options.element;
this.collection = collection;
}
set scene(scene) {
this._scene = scene;
}
set show(show) {
this._show = show;
if (Cesium.defined(this.element)) {
if (show) {
this._element.style.display = 'block';
}
else {
this._element.style.display = 'none';
}
}
}
get show() {
return this._show;
}
set position(position) {
this._position = position;
}
get position() {
return this._position;
}
set pixelOffset(pixelOffset) {
this._pixelOffset = pixelOffset;
}
get pixelOffset() {
return this._pixelOffset;
}
set element(element) {
this._element = element;
if (Cesium.defined(element)) {
this._mapContainer.appendChild(element);
this._element.style.position = 'absolute';
this._element.style.zIndex = Number.MAX_VALUE.toString();
}
}
get element() {
return this._element;
}
set collection(collection) {
this._collection = collection;
}
get collection() {
return this._collection;
}
update() {
if (!Cesium.defined(this._show) || !Cesium.defined(this._element)) {
return;
}
let screenPosition = Cesium.SceneTransforms.wgs84ToWindowCoordinates(this._scene, this._position);
if (!Cesium.defined(screenPosition)) {
screenPosition = new Cesium.Cartesian2((-1000), (-1000));
}
else if (Cesium.defined(this._pixelOffset) && Cesium.defined(this._pixelOffset.x) && Cesium.defined(this._pixelOffset.y)) {
screenPosition.y += this._pixelOffset.y;
screenPosition.x += this._pixelOffset.x;
}
if (this._lastPosition && this._lastPosition.equals(screenPosition)) {
return;
}
this._element.style.top = `${screenPosition.y}px`;
this._element.style.left = `${screenPosition.x}px`;
this._lastPosition = screenPosition;
}
remove() {
if (this._element) {
this._element.remove();
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY2VzaXVtL3NyYy9saWIvY2VzaXVtLWV4dGVuZGVyL3ByaW1pdGl2ZXMvaHRtbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8sYUFBYTtJQVd4QixZQUFZLE9BQVksRUFBRSxhQUE2QixJQUFJO1FBQ3pELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzFDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEtBQVU7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFbEIsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENB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QUcsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0bWxDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgQ2FydGVzaWFuMiB9IGZyb20gJy4uLy4uL2FuZ3VsYXItY2VzaXVtL21vZGVscy9jYXJ0ZXNpYW4yJztcbmltcG9ydCB7IENhcnRlc2lhbjMgfSBmcm9tICcuLi8uLi9hbmd1bGFyLWNlc2l1bS9tb2RlbHMvY2FydGVzaWFuMyc7XG5cbmV4cG9ydCBjbGFzcyBIdG1sUHJpbWl0aXZlIHtcblxuICBwcml2YXRlIF9zY2VuZTogYW55O1xuICBwcml2YXRlIF9zaG93OiBib29sZWFuO1xuICBwcml2YXRlIF9wb3NpdGlvbjogQ2FydGVzaWFuMztcbiAgcHJpdmF0ZSBfbGFzdFBvc2l0aW9uOiBDYXJ0ZXNpYW4yO1xuICBwcml2YXRlIF9waXhlbE9mZnNldDogQ2FydGVzaWFuMjtcbiAgcHJpdmF0ZSBfZWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2NvbGxlY3Rpb246IEh0bWxDb2xsZWN0aW9uO1xuICBwcml2YXRlIF9tYXBDb250YWluZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogYW55LCBjb2xsZWN0aW9uOiBIdG1sQ29sbGVjdGlvbiA9IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0h0bWxQcmltaXRpdmUgRVJST1I6IGludmFsaWQgaHRtbCBvcHRpb25zIScpO1xuICAgIH1cblxuICAgIHRoaXMuc2NlbmUgPSBvcHRpb25zLnNjZW5lO1xuICAgIHRoaXMuX21hcENvbnRhaW5lciA9IG9wdGlvbnMubWFwQ29udGFpbmVyO1xuICAgIHRoaXMuc2hvdyA9IG9wdGlvbnMuc2hvdyB8fCB0cnVlO1xuICAgIHRoaXMucG9zaXRpb24gPSBvcHRpb25zLnBvc2l0aW9uO1xuICAgIHRoaXMucGl4ZWxPZmZzZXQgPSBvcHRpb25zLnBpeGVsT2Zmc2V0O1xuICAgIHRoaXMuZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudDtcbiAgICB0aGlzLmNvbGxlY3Rpb24gPSBjb2xsZWN0aW9uO1xuICB9XG5cbiAgc2V0IHNjZW5lKHNjZW5lOiBhbnkpIHtcbiAgICB0aGlzLl9zY2VuZSA9IHNjZW5lO1xuICB9XG5cbiAgc2V0IHNob3coc2hvdzogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3cgPSBzaG93O1xuXG4gICAgaWYgKENlc2l1bS5kZWZpbmVkKHRoaXMuZWxlbWVudCkpIHtcbiAgICAgIGlmIChzaG93KSB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNob3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3c7XG4gIH1cblxuICBzZXQgcG9zaXRpb24ocG9zaXRpb246IENhcnRlc2lhbjMpIHtcbiAgICB0aGlzLl9wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0IHBvc2l0aW9uKCk6IENhcnRlc2lhbjMge1xuICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbjtcbiAgfVxuXG4gIHNldCBwaXhlbE9mZnNldChwaXhlbE9mZnNldDogQ2FydGVzaWFuMikge1xuICAgIHRoaXMuX3BpeGVsT2Zmc2V0ID0gcGl4ZWxPZmZzZXQ7XG4gIH1cblxuICBnZXQgcGl4ZWxPZmZzZXQoKTogQ2FydGVzaWFuMiB7XG4gICAgcmV0dXJuIHRoaXMuX3BpeGVsT2Zmc2V0O1xuICB9XG5cbiAgc2V0IGVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDtcblxuICAgIGlmIChDZXNpdW0uZGVmaW5lZChlbGVtZW50KSkge1xuICAgICAgdGhpcy5fbWFwQ29udGFpbmVyLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnpJbmRleCA9IE51bWJlci5NQVhfVkFMVUUudG9TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7XG4gIH1cblxuICBzZXQgY29sbGVjdGlvbihjb2xsZWN0aW9uOiBIdG1sQ29sbGVjdGlvbikge1xuICAgIHRoaXMuX2NvbGxlY3Rpb24gPSBjb2xsZWN0aW9uO1xuICB9XG5cbiAgZ2V0IGNvbGxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb247XG4gIH1cblxuICB1cGRhdGUoKSB7XG4gICAgaWYgKCFDZXNpdW0uZGVmaW5lZCh0aGlzLl9zaG93KSB8fCAhQ2VzaXVtLmRlZmluZWQodGhpcy5fZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgc2NyZWVuUG9zaXRpb24gPSBDZXNpdW0uU2NlbmVUcmFuc2Zvcm1zLndnczg0VG9XaW5kb3dDb29yZGluYXRlcyh0aGlzLl9zY2VuZSwgdGhpcy5fcG9zaXRpb24pO1xuXG4gICAgaWYgKCFDZXNpdW0uZGVmaW5lZChzY3JlZW5Qb3NpdGlvbikpIHtcbiAgICAgIHNjcmVlblBvc2l0aW9uID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKCgtMTAwMCksICgtMTAwMCkpO1xuICAgIH0gZWxzZSBpZiAoQ2VzaXVtLmRlZmluZWQodGhpcy5fcGl4ZWxPZmZzZXQpICYmIENlc2l1bS5kZWZpbmVkKHRoaXMuX3BpeGVsT2Zmc2V0LngpICYmIENlc2l1bS5kZWZpbmVkKHRoaXMuX3BpeGVsT2Zmc2V0LnkpKSB7XG4gICAgICBzY3JlZW5Qb3NpdGlvbi55ICs9IHRoaXMuX3BpeGVsT2Zmc2V0Lnk7XG4gICAgICBzY3JlZW5Qb3NpdGlvbi54ICs9IHRoaXMuX3BpeGVsT2Zmc2V0Lng7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xhc3RQb3NpdGlvbiAmJiB0aGlzLl9sYXN0UG9zaXRpb24uZXF1YWxzKHNjcmVlblBvc2l0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUudG9wID0gYCR7c2NyZWVuUG9zaXRpb24ueX1weGA7XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7c2NyZWVuUG9zaXRpb24ueH1weGA7XG4gICAgdGhpcy5fbGFzdFBvc2l0aW9uID0gc2NyZWVuUG9zaXRpb247XG4gIH1cblxuICByZW1vdmUoKSB7XG4gICAgaWYgKHRoaXMuX2VsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=