{"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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"}