UNPKG

vue-cesium

Version:
1 lines 12.7 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/providers/tiled-cache/index.ts"],"sourcesContent":["import { createCommentVNode, defineComponent, getCurrentInstance, PropType } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcRectangle } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport {\n url,\n format,\n credit,\n minimumLevel,\n maximumLevel,\n rectangle,\n tilingScheme,\n ellipsoid,\n tileWidth,\n tileHeight\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const tiledcacheImageryProviderProps = {\n ...url,\n ...format,\n ...credit,\n ...minimumLevel,\n ...maximumLevel,\n ...rectangle,\n ...tilingScheme,\n ...ellipsoid,\n ...tileWidth,\n ...tileHeight,\n dir: {\n type: String,\n reqiured: true\n },\n scales: {\n type: Array as PropType<Array<number>>,\n default: () => {\n return [\n 1 / 295829355,\n 1 / 147914678,\n 1 / 73957339,\n 1 / 36978669,\n 1 / 18489335,\n 1 / 9244667,\n 1 / 4622334,\n 1 / 2311167,\n 1 / 1155583,\n 1 / 577792,\n 1 / 288896,\n 1 / 144448,\n 1 / 72224,\n 1 / 36112,\n 1 / 18056,\n 1 / 9026,\n 1 / 4514\n ]\n }\n }\n}\nexport default defineComponent({\n name: 'VcImageryProviderTiledcache',\n props: tiledcacheImageryProviderProps,\n emits: providerEmits,\n setup(props, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'UrlTemplateImageryProvider'\n const providersState = useProviders(props, ctx, instance)\n if (undefined === providersState) {\n return\n }\n // methods\n instance.createCesiumObject = async () => {\n const options = providersState.transformProps(props)\n const { Credit, defined, defaultValue, DeveloperError, Ellipsoid, GeographicTilingScheme, Rectangle, Resource, UrlTemplateImageryProvider } =\n Cesium\n\n const { url, dir, format } = options\n if (!defined(url)) {\n throw new DeveloperError('options.url is required.')\n }\n if (!defined(dir)) {\n throw new DeveloperError('options.dir is required.')\n }\n const resource = (Resource as any).createIfNeeded(url)\n resource.url += `?dir=${dir}&scale={scale}&col={x}&row={y}&format=${format}`\n\n const tilingScheme = defaultValue(\n options.tilingScheme,\n new GeographicTilingScheme({\n ellipsoid: defaultValue(options.ellipsoid, Ellipsoid.WGS84),\n numberOfLevelZeroTilesX: 2,\n numberOfLevelZeroTilesY: 1\n })\n )\n const tileWidth = defaultValue(options.tileWidth, 256)\n const tileHeight = defaultValue(options.tileHeight, 256)\n const maximumLevel = options.maximumLevel\n const minimumLevel = defaultValue(options.minimumLevel, 0)\n const rectangle = defaultValue(options.rectangle, tilingScheme.rectangle)\n // Check the number of tiles at the minimum level. If it's more than four,\n // throw an exception, because starting at the higher minimum\n // level will cause too many tiles to be downloaded and rendered.\n const swTile = tilingScheme.positionToTileXY(Rectangle.southwest(rectangle), minimumLevel)\n const neTile = tilingScheme.positionToTileXY(Rectangle.northeast(rectangle), minimumLevel)\n const tileCount = (Math.abs(neTile.x - swTile.x) + 1) * (Math.abs(neTile.y - swTile.y) + 1)\n\n if (tileCount > 4) {\n throw new DeveloperError(\n 'The rectangle and minimumLevel indicate that there are ' +\n tileCount +\n ' tiles at the minimum level. Imagery providers with more than four tiles at the minimum level are not supported.'\n )\n }\n\n let credit = defaultValue(options.credit, '')\n if (typeof credit === 'string') {\n credit = new Credit(credit)\n }\n\n return new UrlTemplateImageryProvider({\n url: resource,\n credit: credit,\n tilingScheme: tilingScheme,\n tileWidth: tileWidth,\n tileHeight: tileHeight,\n minimumLevel: minimumLevel,\n maximumLevel: maximumLevel,\n rectangle: rectangle,\n customTags: {\n scale: (imageryProvider, x, y, level) => {\n const s = 1 / props.scales[level]\n return padWithZerosIfNecessary(imageryProvider, '{scale}', s)\n }\n }\n })\n }\n\n const padWithZerosIfNecessary = (imageryProvider, key, value) => {\n if (\n imageryProvider &&\n imageryProvider.urlSchemeZeroPadding &&\n Object.prototype.hasOwnProperty.call(imageryProvider.urlSchemeZeroPadding, key)\n ) {\n const paddingTemplate = imageryProvider.urlSchemeZeroPadding[key]\n if (typeof paddingTemplate === 'string') {\n const paddingTemplateWidth = paddingTemplate.length\n if (paddingTemplateWidth > 1) {\n value = value.length >= paddingTemplateWidth ? value : new Array(paddingTemplateWidth - value.toString().length + 1).join('0') + value\n }\n }\n }\n return value\n }\n return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n }\n})\n\nexport type VcImageryProviderTiledcacheProps = {\n /**\n * Path to image tiles on server.\n * Default value: '.'\n */\n url?: string | Cesium.Resource | Promise<string> | Promise<Cesium.Resource>\n /**\n * Default value: 'png'\n */\n format?: string\n /**\n * A credit for the data source, which is displayed on the canvas.\n * Default value: ''\n */\n credit?: string | Cesium.Credit\n /**\n * The minimum level-of-detail supported by the imagery provider. Take care when specifying this that the number of tiles at the minimum level is small, such as four or less. A larger number is likely to result in rendering problems.\n * Default value: 0\n */\n minimumLevel?: number\n /**\n * The maximum level-of-detail supported by the imagery provider, or undefined if there is no limit.\n */\n maximumLevel?: number\n /**\n * The rectangle, in radians, covered by the image.\n */\n rectangle?: VcRectangle\n /**\n * The tiling scheme to use to divide the world into tiles. This parameter is ignored when accessing a tiled server.\n */\n tilingScheme?: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\n /**\n * The ellipsoid. If the tilingScheme is specified and used, this parameter is ignored and the tiling scheme's ellipsoid is used instead. If neither parameter is specified, the WGS84 ellipsoid is used.\n */\n ellipsoid?: Cesium.Ellipsoid\n /**\n * The width of each tile in pixels. This parameter is ignored when accessing a tiled server.\n * Default value: 256\n */\n tileWidth?: number\n /**\n * The height of each tile in pixels. This parameter is ignored when accessing a tiled server.\n * Default value: 256\n */\n tileHeight?: number\n /**\n * Triggers before the VcImageryProviderTiledcache is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcImageryProviderTiledcache is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the component load failed.\n */\n onUnready?: (e: any) => void\n /**\n * Triggers when the VcImageryProviderTiledcache is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the imagery provider encounters an asynchronous error.\n */\n onErrorEvent?: (evt: Cesium.TileProviderError) => void\n /**\n * Triggers when the provider is ready for use.\n */\n onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderTiledcacheRef = VcComponentPublicInstance<VcImageryProviderTiledcacheProps>\n"],"names":["url","format","tilingScheme","tileWidth","tileHeight","maximumLevel","minimumLevel","rectangle","credit"],"mappings":"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"}