1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| export default { x_pi: 3.14159265358979324 * 3000.0 / 180.0, LLBAND: [75, 60, 45, 30, 15, 0], LL2MC: [ [-0.0015702102444, 111320.7020616939, 1704480524535203, -10338987376042340, 26112667856603880, -35149669176653700, 26595700718403920, -10725012454188240, 1800819912950474, 82.5], [0.0008277824516172526, 111320.7020463578, 647795574.6671607, -4082003173.641316, 10774905663.51142, -15171875531.51559, 12053065338.62167, -5124939663.577472, 913311935.9512032, 67.5], [0.00337398766765, 111320.7020202162, 4481351.045890365, -23393751.19931662, 79682215.47186455, -115964993.2797253, 97236711.15602145, -43661946.33752821, 8477230.501135234, 52.5], [0.00220636496208, 111320.7020209128, 51751.86112841131, 3796837.749470245, 992013.7397791013, -1221952.21711287, 1340652.697009075, -620943.6990984312, 144416.9293806241, 37.5], [-0.0003441963504368392, 111320.7020576856, 278.2353980772752, 2485758.690035394, 6070.750963243378, 54821.18345352118, 9540.606633304236, -2710.55326746645, 1405.483844121726, 22.5], [-0.0003218135878613132, 111320.7020701615, 0.00369383431289, 823725.6402795718, 0.46104986909093, 2351.343141331292, 1.58060784298199, 8.77738589078284, 0.37238884252424, 7.45] ], getRange(cC, cB, T) { if (cB != null) { cC = Math.max(cC, cB) } if (T != null) { cC = Math.min(cC, T) } return cC }, getLoop(cC, cB, T) { while (cC > T) { cC -= T - cB } while (cC < cB) { cC += T - cB } return cC }, convertor(cC, cD) { if (!cC || !cD) { return null } let T = cD[0] + cD[1] * Math.abs(cC.x) const cB = Math.abs(cC.y) / cD[9] let cE = cD[2] + cD[3] * cB + cD[4] * cB * cB + cD[5] * cB * cB * cB + cD[6] * cB * cB * cB * cB + cD[7] * cB * cB * cB * cB * cB + cD[8] * cB * cB * cB * cB * cB * cB T *= (cC.x < 0 ? -1 : 1) cE *= (cC.y < 0 ? -1 : 1) return [T, cE] }, /// 经纬度坐标转墨卡托坐标 convertLL2MC(T) { let cD, cC, len T.x = this.getLoop(T.x, -180, 180) T.y = this.getRange(T.y, -74, 74) const cB = T for (cC = 0, len = this.LLBAND.length if (cB.y >= this.LLBAND[cC]) { cD = this.LL2MC[cC] break } } if (!cD) { for (cC = this.LLBAND.length - 1 if (cB.y <= -this.LLBAND[cC]) { cD = this.LL2MC[cC] break } } } const cE = this.convertor(T, cD) return cE } }
|