UNPKG

vue-cesium

Version:
1 lines 34.3 kB
{"version":3,"file":"SuperMapImageryProvider.mjs","sources":["../../../../../../packages/components/providers/supermap/SuperMapImageryProvider.ts"],"sourcesContent":["import defer from '@vue-cesium/utils/defer'\nimport IndexedDBScheduler from './IndexedDBScheduler'\nclass SuperMapImageryProvider {\n tablename: string\n _indexedDBScheduler: any\n _indexedDBSetting: {\n isOpen: boolean\n clear: () => void\n }\n isSci: boolean\n isTileMap: boolean\n layersID: string\n _url: string\n _resource: any\n _transparent: boolean\n _name: string\n _urlTemplate: string\n _errorEvent: any\n _fileExtension: string\n _tileWidth: number\n _tileHeight: number\n _minimumLevel: number\n _maximumLevel: number\n _rectangle: any\n _tilingScheme: any\n _tileDiscardPolicy: any\n _fRatio: any\n _scales: any[]\n _coordUnit: string\n _credit: any\n _ready: boolean\n _readyPromise: any\n _options: any\n constructor(options) {\n const { appendForwardSlash, Credit, defaultValue, defined, DeveloperError, Event, Resource, Math } = Cesium\n options = defaultValue(options, {})\n const { url } = options\n if (!defined(url)) {\n throw new DeveloperError('options.url is required.')\n }\n const rootNodeUrlRealspace3D = url.substring(0, url.indexOf('datas'))\n this.tablename = url.substring(0, url.indexOf('datas/') + 6, url.length)\n const that = this\n const dbPromise = new IndexedDBScheduler({\n name: rootNodeUrlRealspace3D + this.tablename\n })\n ;(dbPromise as any).then(e => {\n that._indexedDBScheduler = e\n })\n this._indexedDBSetting = {\n isOpen: false,\n clear: () => {\n that._indexedDBScheduler.clear(that.tablename)\n }\n }\n this.isSci = false\n this.isTileMap = false\n const forwardSlashUrl = appendForwardSlash(url)\n if (forwardSlashUrl.indexOf('rest/maps') > -1) {\n this.isTileMap = true\n this.layersID = options.layersID\n } else {\n if (!(forwardSlashUrl.indexOf('rest/realspace') > -1)) {\n throw new DeveloperError('The url type is not supported!')\n }\n this.isSci = true\n this.layersID = undefined!\n }\n this._url = forwardSlashUrl\n this._resource = (Resource as any).createIfNeeded(forwardSlashUrl)\n this._transparent = defaultValue(options.transparent, true)\n this._name = options.name || ''\n this._urlTemplate = undefined!\n this._errorEvent = new Event()\n this._fileExtension = 'png'\n this._tileWidth = 256\n this._tileHeight = 256\n this._minimumLevel = defaultValue(options.minimumLevel, 0)\n this._maximumLevel = options.maximumLevel\n this._rectangle = undefined\n this._tilingScheme = undefined\n this._tileDiscardPolicy = options.tileDiscardPolicy\n this._fRatio = defaultValue(options.ratio, Math.DEGREES_PER_RADIAN / 6378137.0)\n this._scales = []\n this._coordUnit = 'DEGREE'\n let credit = defaultValue(options.credit, new Credit('MapQuest, SuperMap iServer Imagery'))\n if (typeof credit === 'string') {\n credit = new Credit(credit)\n }\n this._credit = credit\n this._ready = false\n this._readyPromise = defer()\n this._options = options\n }\n\n get url() {\n return this._url\n }\n\n get name() {\n return this._name\n }\n\n set name(val) {\n this._name = val\n }\n\n get tileWidth() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('tileWidth must not be called before the imagery provider is ready.')\n }\n return this._tileWidth\n }\n\n get tileHeight() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('tileHeight must not be called before the imagery provider is ready.')\n }\n return this._tileHeight\n }\n\n get maximumLevel() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('maximumLevel must not be called before the imagery provider is ready.')\n }\n return this._maximumLevel\n }\n\n get minimumLevel() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('minimumLevel must not be called before the imagery provider is ready.')\n }\n return this._minimumLevel\n }\n\n get tilingScheme() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('tilingScheme must not be called before the imagery provider is ready.')\n }\n return this._tilingScheme\n }\n\n get rectangle() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('rectangle must not be called before the imagery provider is ready.')\n }\n return this._rectangle\n }\n\n get errorEvent() {\n return this._errorEvent\n }\n\n get ready() {\n return this._ready\n }\n\n get credit() {\n return this._credit\n }\n\n get hasAlphaChannel() {\n return true\n }\n\n get readyPromise() {\n return this._readyPromise.promise\n }\n\n get ratio() {\n return this._fRatio\n }\n\n set ratio(val) {\n this._fRatio = val\n }\n\n get tileDiscardPolicy() {\n return this._tileDiscardPolicy\n }\n\n getTileCredits(x, y, level) {\n if (!this.ready) {\n throw new Cesium.DeveloperError('getTileCredits must not be called before the imagery provider is ready.')\n }\n return undefined\n }\n\n requestImage(x, y, level, request) {\n const { defined, DeveloperError, ImageryProvider } = Cesium\n if (!this.ready) {\n throw new DeveloperError('requestImage must not be called before the imagery provider is ready.')\n }\n\n const url = buildImageResource.call(this, x, y, level)\n const resource = this._resource.getDerivedResource({\n url: url,\n request: request\n })\n const that: any = this\n if (this._indexedDBSetting.isOpen) {\n if (defined(this._indexedDBScheduler)) {\n const promise = this._indexedDBScheduler.getElementFromDB(this.tablename, url)\n try {\n return promise.then(value => {\n if (defined(value)) {\n const image = new Image()\n image.src = value\n return image\n }\n return ImageryProvider.loadImage(that, resource)\n })\n } catch {\n return ImageryProvider.loadImage(that, resource)\n }\n }\n } else {\n return ImageryProvider.loadImage(this as any, resource)\n }\n }\n\n pickFeatures(x, y, level, longitude, latitude) {\n return undefined\n }\n\n async init() {\n await init.call(this)\n }\n}\n\nlet previousError: any = {}\nconst ScaleTexts = [\n '1.690163571602655E-9',\n '3.3803271432053056E-9',\n '6.760654286410611E-9',\n '1.3521308572821242E-8',\n '2.7042617145642484E-8',\n '5.408523429128511E-8',\n '1.0817046858256998E-7',\n '2.1634093716513974E-7',\n '4.3268187433028044E-7',\n '8.653637486605571E-7',\n '1.7307274973211203E-6',\n '3.4614549946422405E-6',\n '6.9229099892844565E-6',\n '1.3845819978568952E-5',\n '2.7691639957137904E-5',\n '5.53832799142758E-5',\n '1.107665598285516E-4',\n '2.215331196571032E-4',\n '4.430662393142064E-4',\n '8.861324786284128E-4',\n '1.772264957256826E-3',\n '3.544529914513652E-3'\n]\nconst Scales = [\n 1.690163571602655e-9, 3.3803271432053056e-9, 6.760654286410611e-9, 1.3521308572821242e-8, 2.7042617145642484e-8, 5.408523429128511e-8,\n 1.0817046858256998e-7, 2.1634093716513974e-7, 4.3268187433028044e-7, 8.653637486605571e-7, 0.0000017307274973211203, 0.0000034614549946422405,\n 0.0000069229099892844565, 0.000013845819978568952, 0.000027691639957137904, 0.0000553832799142758, 0.0001107665598285516, 0.0002215331196571032,\n 0.0004430662393142064, 0.0008861324786284128, 0.001772264957256826, 0.003544529914513652\n]\n\nfunction buildImageResource(this, x, y, level) {\n let url\n if (this.isTileMap) {\n if (this._coordUnit === 'DEGREE') {\n const scaleText = ScaleTexts[level + 1] || ScaleTexts[level]\n url = this._urlTemplate.replace('{x}', x).replace('{y}', y).replace('{scale}', scaleText)\n } else if (this._coordUnit === 'METER') {\n const scaleText = ScaleTexts[level]\n url = this._urlTemplate.replace('{x}', x).replace('{y}', y).replace('{scale}', scaleText)\n }\n } else {\n url = this._urlTemplate.replace('{x}', x).replace('{y}', y).replace('{level}', level).replace('{fileExtension}', this._fileExtension)\n }\n return url\n}\n\nasync function init(this) {\n const { Resource } = Cesium\n if (this.isTileMap) {\n try {\n const res = await Resource.fetchJsonp({\n url: this._options.url + '.jsonp',\n queryParameters: {\n f: 'json'\n }\n })\n onFulfilledTileMap.call(this, res)\n } catch (e) {\n onRejected.call(this)\n }\n } else {\n // r(c.CREDENTIAL) && (o = c.addToken(o)),\n try {\n const e = await Resource.fetchText({\n url: this.url + 'config'\n })\n onFulfilledRest3D.call(this, e)\n } catch (e) {\n onRejected.call(this)\n }\n }\n}\nfunction getMaximumLevelbyScale(scale) {\n for (let t = Scales.length; t--; ) {\n if (scale[t] <= scale) {\n return t\n }\n }\n}\n\nfunction onFulfilledRest3D(this, xmlText) {\n const options = parseConfigFromXmlText.call(this, xmlText)\n const { defaultValue, defined, GeographicTilingScheme, Math, Rectangle } = Cesium\n this._fileExtension = defaultValue(options.fileExtentName, 'png')\n this._tileWidth = defaultValue(options.imageSizeWidth, 256)\n this._tileHeight = defaultValue(options.imageSizeHeight, 256)\n const levels = options.levels\n const length = levels.length\n this._minimumLevel = defaultValue(levels[0], 0)\n this._maximumLevel = defaultValue(levels[length - 1], length - 1)\n if (!defined(this._tilingScheme)) {\n this._tilingScheme = new GeographicTilingScheme({\n ellipsoid: this._options.ellipsoid\n })\n }\n if (!defined(this._rectangle)) {\n if (options.left && options.right && options.top && options.bottom) {\n const left = Math.toRadians(options.left)\n const right = Math.toRadians(options.right)\n const bottom = Math.toRadians(options.bottom)\n const top = Math.toRadians(options.top)\n this._rectangle = new Rectangle(left, bottom, right, top)\n }\n }\n const tilingScheme = this._tilingScheme\n this._rectangle.west < tilingScheme.rectangle.west && (this._rectangle.west = tilingScheme.rectangle.west)\n this._rectangle.east > tilingScheme.rectangle.east && (this._rectangle.east = tilingScheme.rectangle.east)\n this._rectangle.south < tilingScheme.rectangle.south && (this._rectangle.south = tilingScheme.rectangle.south)\n this._rectangle.north > tilingScheme.rectangle.north && (this._rectangle.north = tilingScheme.rectangle.north)\n\n const swTile = tilingScheme.positionToTileXY(Rectangle.southwest(this._rectangle), this._minimumLevel)\n const neTile = tilingScheme.positionToTileXY(Rectangle.northeast(this._rectangle), this._minimumLevel)\n const tileCount = (window.Math.abs(neTile.x - swTile.x) + 1) * (window.Math.abs(neTile.y - swTile.y) + 1)\n tileCount > 4 && (this._minimumLevel = 0)\n this._tilingScheme = tilingScheme\n this._urlTemplate = this._url + 'data/index/{y}/{x}.{fileExtension}?level={level}'\n this._ready = true\n this._readyPromise.resolve(true)\n}\n\nfunction parseConfigFromXmlText(this, xmlText) {\n const domParser = new DOMParser()\n xmlText = domParser.parseFromString(xmlText, 'application/xml')\n const namespaceURI = 'http://www.supermap.com/SuperMapCache/sci3d'\n const rootNode = xmlText.childNodes[0]\n // let version = queryNumericAttribute(rootNode, 'Version', namespaceURI)\n const levelsNode = queryFirstNode(rootNode, 'Levels', namespaceURI)\n const levelsNodes = queryNodes(levelsNode, 'Level', namespaceURI) || ([] as any)\n const levels: number[] = []\n for (let i = 0; i < levelsNodes.length; i++) {\n levels.push(parseInt(levelsNodes[i].textContent, 10))\n }\n const boundsNode = queryFirstNode(rootNode, 'Bounds', namespaceURI)\n const left = queryNumericAttribute(boundsNode, 'Left', namespaceURI)\n const right = queryNumericAttribute(boundsNode, 'Right', namespaceURI)\n const top = queryNumericAttribute(boundsNode, 'Top', namespaceURI)\n const bottom = queryNumericAttribute(boundsNode, 'Bottom', namespaceURI)\n const fileExtentName = queryStringValue(rootNode, 'FileExtentName', namespaceURI)\n const cellWidth = queryNumericAttribute(rootNode, 'CellWidth', namespaceURI)\n const cellHeight = queryNumericAttribute(rootNode, 'CellHeight', namespaceURI)\n const cacheName = queryStringValue(rootNode, 'CacheName', namespaceURI)\n this._name = cacheName || ''\n return {\n left: left,\n right: right,\n top: top,\n bottom: bottom,\n fileExtentName: fileExtentName,\n levels: levels,\n imageSizeWidth: cellWidth,\n imageSizeHeight: cellHeight\n }\n}\nfunction queryStringValue(xmlNode, attribute, namespaceURI) {\n const node = queryFirstNode(xmlNode, attribute, namespaceURI)\n return Cesium.defined(node) ? node.textContent.trim() : undefined\n}\n\nfunction queryNumericAttribute(xmlNode, attribute, namespaceURI) {\n const node = queryFirstNode(xmlNode, attribute, namespaceURI)\n if (Cesium.defined(node)) {\n const number = parseFloat(node.textContent)\n return isNaN(number) ? undefined : number\n }\n}\nfunction queryFirstNode(xmlNode, attribute, namespaceURI) {\n if (Cesium.defined(xmlNode)) {\n const nodes = xmlNode.childNodes\n const length = nodes.length\n for (let i = 0; i < length; i++) {\n const node = nodes[i]\n if (node.localName === attribute && namespaceURI.indexOf(node.namespaceURI) !== -1) {\n return node\n }\n }\n }\n}\n\nfunction queryNodes(xmlNode, attribute, namespaceURI) {\n if (Cesium.defined(xmlNode)) {\n const nodes: Array<any> = []\n const nodeList = xmlNode.getElementsByTagNameNS('*', attribute)\n const length = nodeList.length\n for (let i = 0; i < length; i++) {\n const node = nodeList[i]\n node.localName === attribute && namespaceURI.indexOf(node.namespaceURI) !== -1 && nodes.push(node)\n }\n return nodes\n }\n}\n\nfunction onFulfilledTileMap(this, response) {\n const { Cartesian3, defaultValue, defined, GeographicTilingScheme, Math: CesiumMath, Rectangle, WebMercatorTilingScheme } = Cesium\n const coordUnit = response.prjCoordSys.coordUnit\n this._coordUnit = coordUnit\n const bounds = response.bounds\n const visibleScales = response.visibleScales\n if (defined(visibleScales) && visibleScales.length > 1 && defined(this._maximumLevel)) {\n const lastVisibleScale = visibleScales[visibleScales.length - 1]\n this._maximumLevel = getMaximumLevelbyScale(lastVisibleScale)\n }\n if (coordUnit === 'DEGREE') {\n this._tilingScheme = new GeographicTilingScheme()\n bounds.left = CesiumMath.clamp(bounds.left, -180, 180)\n bounds.bottom = CesiumMath.clamp(bounds.bottom, -90, 90)\n bounds.right = CesiumMath.clamp(bounds.right, -180, 180)\n bounds.top = CesiumMath.clamp(bounds.top, -90, 90)\n this._rectangle = Rectangle.fromDegrees(bounds.left, bounds.bottom, bounds.right, bounds.top)\n this._urlTemplate =\n this._url +\n 'tileImage.png?transparent={transparent}&cacheEnabled=true&width=256&height=256&x={x}&y={y}&scale={scale}&redirect=false&overlapDisplayed=false&origin={\"x\":-180,\"y\":90}'\n } else {\n const pointLB = new Cartesian3(bounds.left, bounds.bottom, 0)\n pointLB.x = Math.max(-20037508.342789244, pointLB.x)\n pointLB.y = Math.max(-20037508.342789244, pointLB.y)\n const pointRT = new Cartesian3(bounds.right, bounds.top, 0)\n pointRT.x = Math.min(20037508.342789244, pointRT.x)\n pointRT.y = Math.min(20037508.342789244, pointRT.y)\n this._tilingScheme = new WebMercatorTilingScheme()\n const f = this._tilingScheme.projection.unproject(pointLB)\n const p = this._tilingScheme.projection.unproject(pointRT)\n this._rectangle = new Rectangle(f.longitude, f.latitude, p.longitude, p.latitude)\n this._urlTemplate =\n this._url +\n 'tileImage.png?transparent={transparent}&cacheEnabled=true&width=256&height=256&x={x}&y={y}&scale={scale}&redirect=false&overlapDisplayed=false&origin={\"x\":-20037508.342789248 ,\"y\":20037508.342789095}'\n }\n this._urlTemplate = this._urlTemplate.replace('{transparent}', this._transparent)\n this.layersID && (this._urlTemplate = this._urlTemplate + '&layersID=' + this.layersID)\n this._rectangle || (this._rectangle = defaultValue(this._options.rectangle, this._tilingScheme.rectangle))\n this._ready = true\n this._readyPromise.resolve(true)\n}\n\nfunction onRejected(this) {\n const { TileProviderError, RuntimeError } = Cesium\n const message = 'An error occurred while accessing ' + this._url + '.'\n previousError = TileProviderError.reportError(previousError, this, this._errorEvent, message, 0, 0, 0, new Error(message))\n this._readyPromise.reject(new RuntimeError(message))\n}\n\nexport default SuperMapImageryProvider\n"],"names":["Math"],"mappings":"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"}