@eliorar/angular-cesium
Version:
Angular library for working with Cesium.
88 lines • 11 kB
JavaScript
import { Cartesian2, Cartesian3, defined, SceneTransforms } from 'cesium';
// import { Cartesian2 } from '../../angular-cesium/models/cartesian2';
// import { Cartesian3 } from '../../angular-cesium/models/cartesian3';
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 (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 (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 (!defined(this._show) || !defined(this._element)) {
return;
}
let screenPosition = SceneTransforms.wgs84ToWindowCoordinates(this._scene, new Cartesian3(this._position.x, this._position.y, this._position.z));
if (!defined(screenPosition)) {
screenPosition = new Cartesian2((-1000), (-1000));
}
else if (defined(this._pixelOffset) && defined(this._pixelOffset.x) && 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY2VzaXVtL3NyYy9saWIvY2VzaXVtLWV4dGVuZGVyL3ByaW1pdGl2ZXMvaHRtbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXhFLHVFQUF1RTtBQUN2RSx1RUFBdUU7QUFFdkUsTUFBTSxPQUFPLGFBQWE7SUFXeEIsWUFBWSxPQUFZLEVBQUUsYUFBNkIsSUFBSTtRQUN6RCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzFDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEtBQVU7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFbEIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE9B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Y0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYXJ0ZXNpYW4yLCBDYXJ0ZXNpYW4zLCBkZWZpbmVkLCBTY2VuZVRyYW5zZm9ybXN9IGZyb20gJ2Nlc2l1bSc7XG5pbXBvcnQge0h0bWxDb2xsZWN0aW9ufSBmcm9tICcuLi9jb2xsZWN0aW9ucyc7XG4vLyBpbXBvcnQgeyBDYXJ0ZXNpYW4yIH0gZnJvbSAnLi4vLi4vYW5ndWxhci1jZXNpdW0vbW9kZWxzL2NhcnRlc2lhbjInO1xuLy8gaW1wb3J0IHsgQ2FydGVzaWFuMyB9IGZyb20gJy4uLy4uL2FuZ3VsYXItY2VzaXVtL21vZGVscy9jYXJ0ZXNpYW4zJztcblxuZXhwb3J0IGNsYXNzIEh0bWxQcmltaXRpdmUge1xuXG4gIHByaXZhdGUgX3NjZW5lOiBhbnk7XG4gIHByaXZhdGUgX3Nob3c6IGJvb2xlYW47XG4gIHByaXZhdGUgX3Bvc2l0aW9uOiBDYXJ0ZXNpYW4zO1xuICBwcml2YXRlIF9sYXN0UG9zaXRpb246IENhcnRlc2lhbjI7XG4gIHByaXZhdGUgX3BpeGVsT2Zmc2V0OiBDYXJ0ZXNpYW4yO1xuICBwcml2YXRlIF9lbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfY29sbGVjdGlvbjogSHRtbENvbGxlY3Rpb247XG4gIHByaXZhdGUgX21hcENvbnRhaW5lcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnksIGNvbGxlY3Rpb246IEh0bWxDb2xsZWN0aW9uID0gbnVsbCkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSHRtbFByaW1pdGl2ZSBFUlJPUjogaW52YWxpZCBodG1sIG9wdGlvbnMhJyk7XG4gICAgfVxuXG4gICAgdGhpcy5zY2VuZSA9IG9wdGlvbnMuc2NlbmU7XG4gICAgdGhpcy5fbWFwQ29udGFpbmVyID0gb3B0aW9ucy5tYXBDb250YWluZXI7XG4gICAgdGhpcy5zaG93ID0gb3B0aW9ucy5zaG93IHx8IHRydWU7XG4gICAgdGhpcy5wb3NpdGlvbiA9IG9wdGlvbnMucG9zaXRpb247XG4gICAgdGhpcy5waXhlbE9mZnNldCA9IG9wdGlvbnMucGl4ZWxPZmZzZXQ7XG4gICAgdGhpcy5lbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50O1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IGNvbGxlY3Rpb247XG4gIH1cblxuICBzZXQgc2NlbmUoc2NlbmU6IGFueSkge1xuICAgIHRoaXMuX3NjZW5lID0gc2NlbmU7XG4gIH1cblxuICBzZXQgc2hvdyhzaG93OiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvdyA9IHNob3c7XG5cbiAgICBpZiAoZGVmaW5lZCh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICBpZiAoc2hvdykge1xuICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaG93O1xuICB9XG5cbiAgc2V0IHBvc2l0aW9uKHBvc2l0aW9uOiBDYXJ0ZXNpYW4zKSB7XG4gICAgdGhpcy5fcG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgfVxuXG4gIGdldCBwb3NpdGlvbigpOiBDYXJ0ZXNpYW4zIHtcbiAgICByZXR1cm4gdGhpcy5fcG9zaXRpb247XG4gIH1cblxuICBzZXQgcGl4ZWxPZmZzZXQocGl4ZWxPZmZzZXQ6IENhcnRlc2lhbjIpIHtcbiAgICB0aGlzLl9waXhlbE9mZnNldCA9IHBpeGVsT2Zmc2V0O1xuICB9XG5cbiAgZ2V0IHBpeGVsT2Zmc2V0KCk6IENhcnRlc2lhbjIge1xuICAgIHJldHVybiB0aGlzLl9waXhlbE9mZnNldDtcbiAgfVxuXG4gIHNldCBlbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7XG5cbiAgICBpZiAoZGVmaW5lZChlbGVtZW50KSkge1xuICAgICAgdGhpcy5fbWFwQ29udGFpbmVyLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnpJbmRleCA9IE51bWJlci5NQVhfVkFMVUUudG9TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7XG4gIH1cblxuICBzZXQgY29sbGVjdGlvbihjb2xsZWN0aW9uOiBIdG1sQ29sbGVjdGlvbikge1xuICAgIHRoaXMuX2NvbGxlY3Rpb24gPSBjb2xsZWN0aW9uO1xuICB9XG5cbiAgZ2V0IGNvbGxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb247XG4gIH1cblxuICB1cGRhdGUoKSB7XG4gICAgaWYgKCFkZWZpbmVkKHRoaXMuX3Nob3cpIHx8ICFkZWZpbmVkKHRoaXMuX2VsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHNjcmVlblBvc2l0aW9uID0gU2NlbmVUcmFuc2Zvcm1zLndnczg0VG9XaW5kb3dDb29yZGluYXRlcyh0aGlzLl9zY2VuZSwgbmV3IENhcnRlc2lhbjModGhpcy5fcG9zaXRpb24ueCwgdGhpcy5fcG9zaXRpb24ueSwgdGhpcy5fcG9zaXRpb24ueikpO1xuXG4gICAgaWYgKCFkZWZpbmVkKHNjcmVlblBvc2l0aW9uKSkge1xuICAgICAgc2NyZWVuUG9zaXRpb24gPSBuZXcgQ2FydGVzaWFuMigoLTEwMDApLCAoLTEwMDApKTtcbiAgICB9IGVsc2UgaWYgKGRlZmluZWQodGhpcy5fcGl4ZWxPZmZzZXQpICYmIGRlZmluZWQodGhpcy5fcGl4ZWxPZmZzZXQueCkgJiYgZGVmaW5lZCh0aGlzLl9waXhlbE9mZnNldC55KSkge1xuICAgICAgc2NyZWVuUG9zaXRpb24ueSArPSB0aGlzLl9waXhlbE9mZnNldC55O1xuICAgICAgc2NyZWVuUG9zaXRpb24ueCArPSB0aGlzLl9waXhlbE9mZnNldC54O1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9sYXN0UG9zaXRpb24gJiYgdGhpcy5fbGFzdFBvc2l0aW9uLmVxdWFscyhzY3JlZW5Qb3NpdGlvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnRvcCA9IGAke3NjcmVlblBvc2l0aW9uLnl9cHhgO1xuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUubGVmdCA9IGAke3NjcmVlblBvc2l0aW9uLnh9cHhgO1xuICAgIHRoaXMuX2xhc3RQb3NpdGlvbiA9IHNjcmVlblBvc2l0aW9uO1xuICB9XG5cbiAgcmVtb3ZlKCkge1xuICAgIGlmICh0aGlzLl9lbGVtZW50KSB7XG4gICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZSgpO1xuICAgIH1cbiAgfVxufVxuIl19