/// <summary> /// 经纬度转墨卡托坐标 /// </summary> /// <param name="longitude">经度</param> /// <param name="latitude">纬度</param> /// <returns></returns> public static Vector2D ConvertLL2MC(double longitude, double latitude) { longitude = MathCommon.GetLoop(longitude, -180, 180); latitude = MathCommon.GetRange(latitude, -74, 74); double[] cg = null; for (int cf = 0; cf < LLBAND.Length; cf++) { if (latitude >= LLBAND[cf]) { cg = LL2MC[cf].ToArray(); break; } } if (cg == null) { for (int cf = LLBAND.Length - 1; cf >= 0; cf--) { if (latitude <= -LLBAND[cf]) { cg = LL2MC[cf].ToArray(); break; } } } return(Convertor(longitude, latitude, cg)); }
/// <summary> /// 墨卡托坐标转经纬度坐标 /// </summary> /// <param name="vector2D">MC坐标</param> /// <returns></returns> public static Vector2D ConvertMC2LL(Vector2D vector2D) { vector2D.x = MathCommon.GetRange(vector2D.x, -20037726.3691722, 20037726.3691722); vector2D.y = MathCommon.GetRange(vector2D.y, -12474104.1741421, 12474104.1741421); return(ConvertMC2LL(vector2D.x, vector2D.y)); }