{"version":3,"file":"SuperMapImageryProvider.mjs","sources":["../../../../../../packages/components/providers/supermap/SuperMapImageryProvider.ts"],"sourcesContent":["import 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, when, 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 = when.defer()\n    this._options = options\n    init.call(this)\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\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, when } = 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        return defined(promise)\n          ? when(\n              promise,\n              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              e => {\n                return ImageryProvider.loadImage(that, resource)\n              }\n            )\n          : ImageryProvider.loadImage(that, resource)\n      }\n    }\n    return ImageryProvider.loadImage(this as any, resource)\n  }\n\n  pickFeatures(x, y, level, longitude, latitude) {\n    return undefined\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\nfunction init(this) {\n  const { Resource, when } = Cesium\n  if (this.isTileMap) {\n    const promise = Resource.fetchJsonp({\n      url: this._options.url + '.jsonp',\n      queryParameters: {\n        f: 'json'\n      }\n    })\n    when(promise, onFulfilledTileMap.bind(this), onRejected.bind(this))\n  } else {\n    // r(c.CREDENTIAL) && (o = c.addToken(o)),\n    when(\n      Resource.fetchText({\n        url: this.url + 'config'\n      }),\n      onFulfilledRest3D.bind(this),\n      onRejected.bind(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.handleError(previousError, this, this._errorEvent, message, 0, 0, 0, init.bind(this))\n  this._readyPromise.reject(new RuntimeError(message))\n}\n\nexport default SuperMapImageryProvider\n"],"names":[],"mappings":"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"}