{"version":3,"file":"BaiduMapTilingScheme.mjs","sources":["../../../../../../packages/components/providers/baidu/BaiduMapTilingScheme.ts"],"sourcesContent":["import BaiduMapMercatorProjection from './BaiduMapMercatorProjection'\nimport Point from './Point'\nimport * as coordtransform from 'casc-cesium-utils/coordtransform'\n\n/**\n * A tiling scheme for geometry referenced to a BaiduMapMercatorProjection {@link https://cesium.com/docs/cesiumjs-ref-doc/WebMercatorTilingScheme.html}\n * {@link https://github.com/openlayers/openlayers/issues/3522#issuecomment-570493906}\n */\nclass BaiduMapMercatorTilingScheme {\n  _ellipsoid: any\n  _projection: any\n  _rectangleSouthwestInMeters: any\n  _rectangleNortheastInMeters: any\n  _rectangle: any\n  resolutions: any[]\n  constructor(options) {\n    const { defaultValue, Ellipsoid, WebMercatorProjection, Cartesian2, Cartographic, Math: CesiumMath, Rectangle } = Cesium\n    options = options || {}\n    this._ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84)\n    this._projection = new WebMercatorProjection(this._ellipsoid)\n    const projection = new BaiduMapMercatorProjection()\n    this._projection.project = function (cartographic, result) {\n      result = result || {}\n\n      if (options.projectionTransforms && options.projectionTransforms.from !== options.projectionTransforms.to) {\n        if (options.projectionTransforms.to.toUpperCase() === 'WGS84') {\n          result = coordtransform.wgs84togcj02(CesiumMath.toDegrees(cartographic.longitude), CesiumMath.toDegrees(cartographic.latitude))\n          result = coordtransform.gcj02tobd09(result[0], result[1])\n        } else {\n          result = coordtransform.gcj02tobd09(CesiumMath.toDegrees(cartographic.longitude), CesiumMath.toDegrees(cartographic.latitude))\n        }\n      }\n      result[0] = Math.min(result[0], 180)\n      result[0] = Math.max(result[0], -180)\n      result[1] = Math.min(result[1], 74.000022)\n      result[1] = Math.max(result[1], -71.988531)\n      result = projection.lngLatToPoint(new Point(result[0], result[1]))\n      return new Cartesian2(result.x, result.y)\n    }\n\n    this._projection.unproject = function (cartographic, result) {\n      result = result || {}\n      result = projection.mercatorToLngLat(new Point(cartographic.x, cartographic.y))\n      result[0] = ((result[0] + 180) % 360) - 180\n      if (options.projectionTransforms && options.projectionTransforms.from !== options.projectionTransforms.to) {\n        if (options.projectionTransforms.to.toUpperCase() === 'WGS84') {\n          result = coordtransform.bd09togcj02(result.lng, result.lat)\n          result = coordtransform.gcj02towgs84(result[0], result[1])\n        } else {\n          result = coordtransform.bd09togcj02(result.lng, result.lat)\n        }\n      }\n      return new Cartographic(Cesium.Math.toRadians(result[0]), Cesium.Math.toRadians(result[1]))\n    }\n\n    this._rectangleSouthwestInMeters = new Cartesian2(-20037726.37, -12474104.17)\n    this._rectangleNortheastInMeters = new Cartesian2(20037726.37, 12474104.17)\n    const rectangleSouthwestInMeters = this._projection.unproject(this._rectangleSouthwestInMeters)\n    const rectangleNortheastInMeters = this._projection.unproject(this._rectangleNortheastInMeters)\n    this._rectangle = new Rectangle(\n      rectangleSouthwestInMeters.longitude,\n      rectangleSouthwestInMeters.latitude,\n      rectangleNortheastInMeters.longitude,\n      rectangleNortheastInMeters.latitude\n    )\n\n    this.resolutions = []\n    for (let i = 0; i < 19; i++) {\n      this.resolutions[i] = 256 * Math.pow(2, 18 - i)\n    }\n  }\n\n  getNumberOfXTilesAtLevel(level) {\n    return 1 << level\n  }\n\n  getNumberOfYTilesAtLevel(level) {\n    return 1 << level\n  }\n\n  rectangleToNativeRectangle(rectangle, result) {\n    const { defined, Rectangle } = Cesium\n    const projection = this._projection\n    const southwest = projection.project(Rectangle.southwest(rectangle))\n    const northeast = projection.project(Rectangle.northeast(rectangle))\n\n    if (!defined(result)) {\n      return new Rectangle(southwest.x, southwest.y, northeast.x, northeast.y)\n    }\n\n    result.west = southwest.x\n    result.south = southwest.y\n    result.east = northeast.x\n    result.north = northeast.y\n    return result\n  }\n\n  tileXYToNativeRectangle(x, y, level, result) {\n    const { defined, Rectangle } = Cesium\n    const tileWidth = this.resolutions[level]\n    const west = x * tileWidth\n    const east = (x + 1) * tileWidth\n    const north = ((y = -y) + 1) * tileWidth\n    const south = y * tileWidth\n\n    if (!defined(result)) {\n      return new Rectangle(west, south, east, north)\n    }\n\n    result.west = west\n    result.south = south\n    result.east = east\n    result.north = north\n    return result\n  }\n\n  tileXYToRectangle(x, y, level, result) {\n    const { Cartesian2 } = Cesium\n    const nativeRectangle = this.tileXYToNativeRectangle(x, y, level, result)\n\n    const projection = this._projection\n    const southwest = projection.unproject(new Cartesian2(nativeRectangle.west, nativeRectangle.south))\n    const northeast = projection.unproject(new Cartesian2(nativeRectangle.east, nativeRectangle.north))\n\n    nativeRectangle.west = southwest.longitude\n    nativeRectangle.south = southwest.latitude\n    nativeRectangle.east = northeast.longitude\n    nativeRectangle.north = northeast.latitude\n    return nativeRectangle\n  }\n\n  positionToTileXY(position, level, result) {\n    const { Rectangle, defined, Cartesian2 } = Cesium\n    const rectangle = this._rectangle\n    if (!Rectangle.contains(rectangle, position)) {\n      // outside the bounds of the tiling scheme\n      return undefined\n    }\n\n    const projection = this._projection\n    const webMercatorPosition = projection.project(position)\n    if (!defined(webMercatorPosition)) {\n      return undefined\n    }\n\n    const tileWidth = this.resolutions[level]\n    const xTileCoordinate = Math.floor(webMercatorPosition.x / tileWidth)\n    const yTileCoordinate = -Math.floor(webMercatorPosition.y / tileWidth)\n\n    if (!defined(result)) {\n      return new Cartesian2(xTileCoordinate, yTileCoordinate)\n    }\n\n    result.x = xTileCoordinate\n    result.y = yTileCoordinate\n    return result\n  }\n\n  get ellipsoid() {\n    return this._ellipsoid\n  }\n\n  get rectangle() {\n    return this._rectangle\n  }\n\n  get projection() {\n    return this._projection\n  }\n}\n\nexport default BaiduMapMercatorTilingScheme\n"],"names":["coordtransform.wgs84togcj02","coordtransform.gcj02tobd09","coordtransform.bd09togcj02","coordtransform.gcj02towgs84"],"mappings":"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"}