/// <summary> /// 构造函数,以两点初始化一个线段 /// </summary> public MercatorSegment(MercatorPoint point1, MercatorPoint point2) { m_point1 = point1; m_point2 = point2; MaxY = Math.Max(m_point1.Y, m_point2.Y); MinY = Math.Min(m_point1.Y, m_point2.Y); MaxX = Math.Max(m_point1.X, m_point2.X); MinX = Math.Min(m_point1.X, m_point2.X); A = m_point1.Y - m_point2.Y; B = m_point2.X - m_point1.X; C = (m_point1.X * (m_point2.Y - m_point1.Y)) + (m_point1.Y * (m_point1.X - m_point2.X)); }
/// <summary> /// 墨卡托坐標轉經緯度坐標 /// </summary> /// <param name="point"></param> /// <returns>经度, 纬度</returns> public Coordinate MercatorToCoordinate(MercatorPoint point) { double[] mc = null; var abs = Math.Abs(point.Y); for (var i = 0; i < _mcband.Length; i++) { if (abs >= _mcband[i]) { mc = _mc2Ll[i]; break; } } var location = Convertor(point.X, point.Y, mc); return(new Coordinate { Longitude = location[0], Latitude = location[1] }); }