UNPKG

terriajs

Version:

Geospatial data visualization platform.

66 lines (58 loc) 2.02 kB
import { computed, makeObservable } from "mobx"; import MapboxImageryProvider from "terriajs-cesium/Source/Scene/MapboxImageryProvider"; import CatalogMemberMixin from "../../../ModelMixins/CatalogMemberMixin"; import MappableMixin, { MapItem } from "../../../ModelMixins/MappableMixin"; import MapboxMapCatalogItemTraits from "../../../Traits/TraitsClasses/MapboxMapCatalogItemTraits"; import CreateModel from "../../Definition/CreateModel"; import { ModelConstructorParameters } from "../../Definition/Model"; import proxyCatalogItemUrl from "../proxyCatalogItemUrl"; /** * A raster catalog item representing a layer from the Mapbox server. */ export default class MapboxMapCatalogItem extends CatalogMemberMixin( MappableMixin(CreateModel(MapboxMapCatalogItemTraits)) ) { static readonly type = "mapbox-map"; readonly type = MapboxMapCatalogItem.type; constructor(...args: ModelConstructorParameters) { super(...args); makeObservable(this); } @computed private get imageryProvider(): MapboxImageryProvider | undefined { const mapId = this.mapId; const accessToken = this.accessToken; if (mapId === undefined || accessToken === undefined) { return; } const url = this.url === undefined ? undefined : proxyCatalogItemUrl(this, this.url); const imageryProvider = new MapboxImageryProvider({ url, mapId, accessToken, credit: this.attribution, maximumLevel: this.maximumLevel ?? 25, minimumLevel: this.minimumLevel, format: this.format }); return imageryProvider; } forceLoadMapItems() { return Promise.resolve(); } @computed get mapItems(): MapItem[] { const imageryProvider = this.imageryProvider; if (imageryProvider === undefined) { return []; } const imageryPart = { imageryProvider, show: this.show, alpha: this.opacity, clippingRectangle: this.clipToRectangle ? this.cesiumRectangle : undefined }; return [imageryPart]; } }