terriajs
Version:
Geospatial data visualization platform.
54 lines (48 loc) • 1.58 kB
text/typescript
import { computed } from "mobx";
import IonImageryProvider from "terriajs-cesium/Source/Scene/IonImageryProvider";
import isDefined from "../../../Core/isDefined";
import CatalogMemberMixin from "../../../ModelMixins/CatalogMemberMixin";
import MappableMixin, { MapItem } from "../../../ModelMixins/MappableMixin";
import IonImageryCatalogItemTraits from "../../../Traits/TraitsClasses/IonImageryCatalogItemTraits";
import CreateModel from "../../Definition/CreateModel";
export default class IonImageryCatalogItem extends MappableMixin(
CatalogMemberMixin(CreateModel(IonImageryCatalogItemTraits))
) {
static readonly type = "ion-imagery";
get type() {
return IonImageryCatalogItem.type;
}
protected forceLoadMapItems(): Promise<void> {
return Promise.resolve();
}
get mapItems(): MapItem[] {
if (!isDefined(this.imageryProvider)) {
return [];
}
return [
{
show: this.show,
alpha: this.opacity,
imageryProvider: this.imageryProvider,
clippingRectangle: this.clipToRectangle
? this.cesiumRectangle
: undefined
}
];
}
get imageryProvider() {
if (isDefined(this.ionAssetId)) {
const provider = new IonImageryProvider({
assetId: this.ionAssetId,
accessToken:
this.ionAccessToken ||
this.terria.configParameters.cesiumIonAccessToken,
server: this.ionServer
});
if (this.attribution) {
(<any>provider)._credit = this.attribution;
}
return provider;
}
}
}