angular-cesium-ivy
Version:
Angular library for working with Angular-Cesium.
85 lines • 10.6 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY2VzaXVtL3NyYy9saWIvY2VzaXVtLWV4dGVuZGVyL3ByaW1pdGl2ZXMvaHRtbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8sYUFBYTtJQVd4QixZQUFZLE9BQVksRUFBRSxhQUE2QixJQUFJO1FBQ3pELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztTQUMvRDtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBYTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUVsQixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2hDLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENB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QUFDLElBQUksQ0FBQztRQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHRtbENvbGxlY3Rpb24gfSBmcm9tICcuLi9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBDYXJ0ZXNpYW4yIH0gZnJvbSAnLi4vLi4vYW5ndWxhci1jZXNpdW0vbW9kZWxzL2NhcnRlc2lhbjInO1xuaW1wb3J0IHsgQ2FydGVzaWFuMyB9IGZyb20gJy4uLy4uL2FuZ3VsYXItY2VzaXVtL21vZGVscy9jYXJ0ZXNpYW4zJztcblxuZXhwb3J0IGNsYXNzIEh0bWxQcmltaXRpdmUge1xuXG4gIHByaXZhdGUgX3NjZW5lOiBhbnk7XG4gIHByaXZhdGUgX3Nob3c6IGJvb2xlYW47XG4gIHByaXZhdGUgX3Bvc2l0aW9uOiBDYXJ0ZXNpYW4zO1xuICBwcml2YXRlIF9sYXN0UG9zaXRpb246IENhcnRlc2lhbjI7XG4gIHByaXZhdGUgX3BpeGVsT2Zmc2V0OiBDYXJ0ZXNpYW4yO1xuICBwcml2YXRlIF9lbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfY29sbGVjdGlvbjogSHRtbENvbGxlY3Rpb247XG4gIHByaXZhdGUgX21hcENvbnRhaW5lcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnksIGNvbGxlY3Rpb246IEh0bWxDb2xsZWN0aW9uID0gbnVsbCkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSHRtbFByaW1pdGl2ZSBFUlJPUjogaW52YWxpZCBodG1sIG9wdGlvbnMhJyk7XG4gICAgfVxuXG4gICAgdGhpcy5zY2VuZSA9IG9wdGlvbnMuc2NlbmU7XG4gICAgdGhpcy5fbWFwQ29udGFpbmVyID0gb3B0aW9ucy5tYXBDb250YWluZXI7XG4gICAgdGhpcy5zaG93ID0gb3B0aW9ucy5zaG93IHx8IHRydWU7XG4gICAgdGhpcy5wb3NpdGlvbiA9IG9wdGlvbnMucG9zaXRpb247XG4gICAgdGhpcy5waXhlbE9mZnNldCA9IG9wdGlvbnMucGl4ZWxPZmZzZXQ7XG4gICAgdGhpcy5lbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50O1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IGNvbGxlY3Rpb247XG4gIH1cblxuICBzZXQgc2NlbmUoc2NlbmU6IGFueSkge1xuICAgIHRoaXMuX3NjZW5lID0gc2NlbmU7XG4gIH1cblxuICBzZXQgc2hvdyhzaG93OiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvdyA9IHNob3c7XG5cbiAgICBpZiAoQ2VzaXVtLmRlZmluZWQodGhpcy5lbGVtZW50KSkge1xuICAgICAgaWYgKHNob3cpIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgc2hvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvdztcbiAgfVxuXG4gIHNldCBwb3NpdGlvbihwb3NpdGlvbjogQ2FydGVzaWFuMykge1xuICAgIHRoaXMuX3Bvc2l0aW9uID0gcG9zaXRpb247XG4gIH1cblxuICBnZXQgcG9zaXRpb24oKTogQ2FydGVzaWFuMyB7XG4gICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xuICB9XG5cbiAgc2V0IHBpeGVsT2Zmc2V0KHBpeGVsT2Zmc2V0OiBDYXJ0ZXNpYW4yKSB7XG4gICAgdGhpcy5fcGl4ZWxPZmZzZXQgPSBwaXhlbE9mZnNldDtcbiAgfVxuXG4gIGdldCBwaXhlbE9mZnNldCgpOiBDYXJ0ZXNpYW4yIHtcbiAgICByZXR1cm4gdGhpcy5fcGl4ZWxPZmZzZXQ7XG4gIH1cblxuICBzZXQgZWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50O1xuXG4gICAgaWYgKENlc2l1bS5kZWZpbmVkKGVsZW1lbnQpKSB7XG4gICAgICB0aGlzLl9tYXBDb250YWluZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuekluZGV4ID0gTnVtYmVyLk1BWF9WQUxVRS50b1N0cmluZygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBlbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudDtcbiAgfVxuXG4gIHNldCBjb2xsZWN0aW9uKGNvbGxlY3Rpb246IEh0bWxDb2xsZWN0aW9uKSB7XG4gICAgdGhpcy5fY29sbGVjdGlvbiA9IGNvbGxlY3Rpb247XG4gIH1cblxuICBnZXQgY29sbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvbjtcbiAgfVxuXG4gIHVwZGF0ZSgpIHtcbiAgICBpZiAoIUNlc2l1bS5kZWZpbmVkKHRoaXMuX3Nob3cpIHx8ICFDZXNpdW0uZGVmaW5lZCh0aGlzLl9lbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBzY3JlZW5Qb3NpdGlvbiA9IENlc2l1bS5TY2VuZVRyYW5zZm9ybXMud2dzODRUb1dpbmRvd0Nvb3JkaW5hdGVzKHRoaXMuX3NjZW5lLCB0aGlzLl9wb3NpdGlvbik7XG5cbiAgICBpZiAoIUNlc2l1bS5kZWZpbmVkKHNjcmVlblBvc2l0aW9uKSkge1xuICAgICAgc2NyZWVuUG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoKC0xMDAwKSwgKC0xMDAwKSk7XG4gICAgfSBlbHNlIGlmIChDZXNpdW0uZGVmaW5lZCh0aGlzLl9waXhlbE9mZnNldCkgJiYgQ2VzaXVtLmRlZmluZWQodGhpcy5fcGl4ZWxPZmZzZXQueCkgJiYgQ2VzaXVtLmRlZmluZWQodGhpcy5fcGl4ZWxPZmZzZXQueSkpIHtcbiAgICAgIHNjcmVlblBvc2l0aW9uLnkgKz0gdGhpcy5fcGl4ZWxPZmZzZXQueTtcbiAgICAgIHNjcmVlblBvc2l0aW9uLnggKz0gdGhpcy5fcGl4ZWxPZmZzZXQueDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbGFzdFBvc2l0aW9uICYmIHRoaXMuX2xhc3RQb3NpdGlvbi5lcXVhbHMoc2NyZWVuUG9zaXRpb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS50b3AgPSBgJHtzY3JlZW5Qb3NpdGlvbi55fXB4YDtcbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlLmxlZnQgPSBgJHtzY3JlZW5Qb3NpdGlvbi54fXB4YDtcbiAgICB0aGlzLl9sYXN0UG9zaXRpb24gPSBzY3JlZW5Qb3NpdGlvbjtcbiAgfVxuXG4gIHJlbW92ZSgpIHtcbiAgICBpZiAodGhpcy5fZWxlbWVudCkge1xuICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==