{"version":3,"file":"BaiduMapMercatorProjection.mjs","sources":["../../../../../../packages/components/providers/baidu/BaiduMapMercatorProjection.ts"],"sourcesContent":["import Point from './Point'\nimport Pixel from './Pixel'\n\n/**\n * Projection used by [Baidu Map]{@link https://github.com/openlayers/openlayers/issues/3522}\n */\nclass BaiduMapMercatorProjection {\n  // constructor () {\n  //   super()\n  // }\n\n  static EARTHRADIUS = 6370996.81\n  static MCBAND = [12890594.86, 8362377.87, 5591021, 3481989.83, 1678043.12, 0]\n  static LLBAND = [75, 60, 45, 30, 15, 0]\n  static MC2LL = [\n    [\n      1.410526172116255e-8, 8.98305509648872e-6, -1.9939833816331, 2.009824383106796e2, -1.872403703815547e2, 91.6087516669843, -23.38765649603339,\n      2.57121317296198, -0.03801003308653, 1.73379812e7\n    ],\n    [\n      -7.435856389565537e-9, 8.983055097726239e-6, -0.78625201886289, 96.32687599759846, -1.85204757529826, -59.36935905485877, 47.40033549296737,\n      -16.50741931063887, 2.28786674699375, 1.026014486e7\n    ],\n    [\n      -3.030883460898826e-8, 8.98305509983578e-6, 0.30071316287616, 59.74293618442277, 7.357984074871, -25.38371002664745, 13.45380521110908,\n      -3.29883767235584, 0.32710905363475, 6.85681737e6\n    ],\n    [\n      -1.981981304930552e-8, 8.983055099779535e-6, 0.03278182852591, 40.31678527705744, 0.65659298677277, -4.44255534477492, 0.85341911805263,\n      0.12923347998204, -0.04625736007561, 4.48277706e6\n    ],\n    [\n      3.09191371068437e-9, 8.983055096812155e-6, 0.00006995724062, 23.10934304144901, -0.00023663490511, -0.6321817810242, -0.00663494467273,\n      0.03430082397953, -0.00466043876332, 2.5551644e6\n    ],\n    [\n      2.890871144776878e-9, 8.983055095805407e-6, -0.00000003068298, 7.47137025468032, -0.00000353937994, -0.02145144861037, -0.00001234426596,\n      0.00010322952773, -0.00000323890364, 8.260885e5\n    ]\n  ]\n\n  static LL2MC = [\n    [\n      -0.0015702102444, 1.113207020616939e5, 1.704480524535203e15, -1.033898737604234e16, 2.611266785660388e16, -3.51496691766537e16,\n      2.659570071840392e16, -1.072501245418824e16, 1.800819912950474e15, 82.5\n    ],\n    [\n      8.277824516172526e-4, 1.113207020463578e5,\n      // eslint-disable-next-line no-loss-of-precision\n      // eslint-disable-next-line @typescript-eslint/no-loss-of-precision\n      6.477955746671608e8, -4.082003173641316e9, 1.077490566351142e10, -1.517187553151559e10, 1.205306533862167e10, -5.124939663577472e9,\n      9.133119359512032e8, 67.5\n    ],\n    [\n      0.00337398766765, 1.113207020202162e5, 4.481351045890365e6, -2.339375119931662e7, 7.968221547186455e7, -1.159649932797253e8,\n      9.723671115602145e7, -4.366194633752821e7, 8.477230501135234e6, 52.5\n    ],\n    [\n      0.00220636496208, 1.113207020209128e5, 5.175186112841131e4, 3.796837749470245e6, 9.920137397791013e5, -1.22195221711287e6, 1.340652697009075e6,\n      -6.209436990984312e5, 1.444169293806241e5, 37.5\n    ],\n    [\n      -3.441963504368392e-4, 1.113207020576856e5, 2.782353980772752e2, 2.485758690035394e6, 6.070750963243378e3, 5.482118345352118e4,\n      9.540606633304236e3, -2.71055326746645e3, 1.405483844121726e3, 22.5\n    ],\n    [\n      -3.218135878613132e-4, 1.113207020701615e5, 0.00369383431289, 8.237256402795718e5, 0.46104986909093, 2.351343141331292e3, 1.58060784298199,\n      8.77738589078284, 0.37238884252424, 7.45\n    ]\n  ]\n\n  /**\n   * 根据平面直角坐标计算两点间距离;\n   * @param {Point} point1 平面直角点坐标1\n   * @param {Point} point2 平面直角点坐标2;\n   * @return {Number} 返回两点间的距离\n   */\n  static getDistanceByMC = function (point1, point2) {\n    if (!point1 || !point2) return 0\n    point1 = BaiduMapMercatorProjection.convertMC2LL(point1)\n    if (!point1) return 0\n    const x1 = BaiduMapMercatorProjection.toRadians(point1.lng)\n    const y1 = BaiduMapMercatorProjection.toRadians(point1.lat)\n    point2 = BaiduMapMercatorProjection.convertMC2LL(point2)\n    if (!point2) return 0\n    const x2 = BaiduMapMercatorProjection.toRadians(point2.lng)\n    const y2 = BaiduMapMercatorProjection.toRadians(point2.lat)\n    return BaiduMapMercatorProjection.getDistance(x1, x2, y1, y2)\n  }\n\n  /**\n   * 根据经纬度坐标计算两点间距离;\n   * @param {Point} point1 经纬度点坐标1\n   * @param {Point} point2 经纬度点坐标2;\n   * @return {Number} 返回两点间的距离\n   */\n  static getDistanceByLL = function (point1, point2) {\n    if (!point1 || !point2) return 0\n    point1.lng = BaiduMapMercatorProjection.getLoop(point1.lng, -180, 180)\n    point1.lat = BaiduMapMercatorProjection.getRange(point1.lat, -74, 74)\n    point2.lng = BaiduMapMercatorProjection.getLoop(point2.lng, -180, 180)\n    point2.lat = BaiduMapMercatorProjection.getRange(point2.lat, -74, 74)\n    const x1 = BaiduMapMercatorProjection.toRadians(point1.lng)\n    const y1 = BaiduMapMercatorProjection.toRadians(point1.lat)\n    const x2 = BaiduMapMercatorProjection.toRadians(point2.lng)\n    const y2 = BaiduMapMercatorProjection.toRadians(point2.lat)\n    return BaiduMapMercatorProjection.getDistance(x1, x2, y1, y2)\n  }\n\n  /**\n   * 平面直角坐标转换成经纬度坐标;\n   * @param {Point} point 平面直角坐标\n   * @return {Point} 返回经纬度坐标\n   */\n  static convertMC2LL = function (point) {\n    let factor\n    const temp = new Point(Math.abs(point.lng), Math.abs(point.lat))\n    for (let i = 0; i < BaiduMapMercatorProjection.MCBAND.length; i++) {\n      if (temp.lat >= BaiduMapMercatorProjection.MCBAND[i]) {\n        factor = BaiduMapMercatorProjection.MC2LL[i]\n        break\n      }\n    }\n    const lnglat = BaiduMapMercatorProjection.convertor(point, factor)\n    return new Point(lnglat?.lng.toFixed(6), lnglat?.lat.toFixed(6))\n  }\n\n  /**\n   * 经纬度坐标转换成平面直角坐标;\n   * @param {Point} point 经纬度坐标\n   * @return {Point} 返回平面直角坐标\n   */\n  static convertLL2MC = function (point) {\n    let factor\n    point.lng = BaiduMapMercatorProjection.getLoop(point.lng, -180, 180)\n    point.lat = BaiduMapMercatorProjection.getRange(point.lat, -74, 74)\n    const temp = new Point(point.lng, point.lat)\n    for (let i = 0; i < BaiduMapMercatorProjection.LLBAND.length; i++) {\n      if (temp.lat >= BaiduMapMercatorProjection.LLBAND[i]) {\n        factor = BaiduMapMercatorProjection.LL2MC[i]\n        break\n      }\n    }\n    if (!factor) {\n      for (let i = BaiduMapMercatorProjection.LLBAND.length - 1; i >= 0; i--) {\n        if (temp.lat <= -BaiduMapMercatorProjection.LLBAND[i]) {\n          factor = BaiduMapMercatorProjection.LL2MC[i]\n          break\n        }\n      }\n    }\n    const mc = BaiduMapMercatorProjection.convertor(point, factor)\n    return new Point(mc?.lng.toFixed(2), mc?.lat.toFixed(2))\n  }\n\n  static convertor = function (fromPoint, factor) {\n    if (!fromPoint || !factor) {\n      return\n    }\n    let x = factor[0] + factor[1] * Math.abs(fromPoint.lng)\n    const temp = Math.abs(fromPoint.lat) / factor[9]\n    let y =\n      factor[2] +\n      factor[3] * temp +\n      factor[4] * temp * temp +\n      factor[5] * temp * temp * temp +\n      factor[6] * temp * temp * temp * temp +\n      factor[7] * temp * temp * temp * temp * temp +\n      factor[8] * temp * temp * temp * temp * temp * temp\n    x *= fromPoint.lng < 0 ? -1 : 1\n    y *= fromPoint.lat < 0 ? -1 : 1\n    return new Point(x, y)\n  }\n\n  static getDistance = function (x1, x2, y1, y2) {\n    return BaiduMapMercatorProjection.EARTHRADIUS * Math.acos(Math.sin(y1) * Math.sin(y2) + Math.cos(y1) * Math.cos(y2) * Math.cos(x2 - x1))\n  }\n\n  static toRadians = function (angdeg) {\n    return (Math.PI * angdeg) / 180\n  }\n\n  static toDegrees = function (angrad) {\n    return (180 * angrad) / Math.PI\n  }\n\n  static getRange = function (v, a, b) {\n    if (a != null) {\n      v = Math.max(v, a)\n    }\n    if (b != null) {\n      v = Math.min(v, b)\n    }\n    return v\n  }\n\n  static getLoop = function (v, a, b) {\n    while (v > b) {\n      v -= b - a\n    }\n    while (v < a) {\n      v += b - a\n    }\n    return v\n  }\n\n  /**\n   * 经纬度变换至墨卡托坐标\n   * @param Point 经纬度\n   * @return Point 墨卡托\n   */\n  lngLatToMercator(point, curCity?) {\n    return BaiduMapMercatorProjection.convertLL2MC(point)\n  }\n\n  /**\n   * 球面到平面坐标\n   * @param Point 球面坐标\n   * @return Pixel 平面坐标\n   */\n  lngLatToPoint(point: Point): Pixel {\n    const mercator = BaiduMapMercatorProjection.convertLL2MC(point)\n    return new Pixel(mercator.lng, mercator.lat)\n  }\n\n  /**\n   * 墨卡托变换至经纬度\n   * @param Point 墨卡托\n   * @returns Point 经纬度\n   */\n  mercatorToLngLat(point, curCity?) {\n    return BaiduMapMercatorProjection.convertMC2LL(point)\n  }\n\n  /**\n   * 平面到球面坐标\n   * @param Pixel 平面坐标\n   * @returns Point 球面坐标\n   */\n  pointToLngLat(point) {\n    const mercator = new Point(point.x, point.y)\n    return BaiduMapMercatorProjection.convertMC2LL(mercator)\n  }\n\n  /**\n   * 地理坐标转换至像素坐标\n   * @param Point 地理坐标\n   * @param Number 级别\n   * @param Point 地图中心点，注意为了保证没有误差，这里需要传递墨卡托坐标\n   * @param Size 地图容器大小\n   * @return Pixel 像素坐标\n   */\n  pointToPixel(point, zoom, mapCenter, mapSize, curCity) {\n    if (!point) {\n      return\n    }\n    point = this.lngLatToMercator(point, curCity)\n    mapCenter = this.lngLatToMercator(mapCenter)\n    const zoomUnits = this.getZoomUnits(zoom)\n    const x = Math.round((point.lng - mapCenter.lng) / zoomUnits + mapSize.width / 2)\n    const y = Math.round((mapCenter.lat - point.lat) / zoomUnits + mapSize.height / 2)\n    return new Pixel(x, y)\n  }\n\n  /**\n   * 像素坐标转换至地理坐标\n   * @param Pixel 像素坐标\n   * @param Number 级别\n   * @param Point 地图中心点，注意为了保证没有误差，这里需要传递墨卡托坐标\n   * @param Size 地图容器大小\n   * @return Point 地理坐标\n   */\n  pixelToPoint(pixel, zoom, mapCenter, mapSize, curCity) {\n    if (!pixel) {\n      return\n    }\n    const zoomUnits = this.getZoomUnits(zoom)\n    const lng = mapCenter.lng + zoomUnits * (pixel.x - mapSize.width / 2)\n    const lat = mapCenter.lat - zoomUnits * (pixel.y - mapSize.height / 2)\n    const point = new Point(lng, lat)\n    return this.mercatorToLngLat(point, curCity)\n  }\n\n  getZoomUnits(zoom) {\n    return Math.pow(2, 18 - zoom)\n  }\n}\n\nexport default BaiduMapMercatorProjection\n"],"names":[],"mappings":"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"}