Esempio n. 1
0
        public LngLatPoint GCJ2WGS(double gcjLat, double gcjLng)
        {
            if (this.OutOfChina(gcjLat, gcjLng))
            {
                return(new LngLatPoint(gcjLat, gcjLng));
            }
            LngLatPoint point = this.Delta(gcjLat, gcjLng);

            return(new LngLatPoint(gcjLat - point.Lat, gcjLng - point.Lng));
        }
Esempio n. 2
0
        public LngLatPoint WGS2GCJ(double wgsLat, double wgsLng)
        {
            if (this.OutOfChina(wgsLat, wgsLng))
            {
                return(new LngLatPoint(wgsLat, wgsLng));
            }
            LngLatPoint point = this.Delta(wgsLat, wgsLng);

            return(new LngLatPoint(wgsLat + point.Lat, wgsLng + point.Lng));
        }
Esempio n. 3
0
        public LngLatPoint GCJ2WGSExact(double gcjLat, double gcjLng)
        {
            double num    = 0.01;
            double num2   = 1E-06;
            double num3   = num;
            double num4   = num;
            double num5   = gcjLat - num3;
            double num6   = gcjLng - num4;
            double num7   = gcjLat + num3;
            double num8   = gcjLng + num4;
            double wgsLat = 0.0;
            double wgsLng = 0.0;

            for (int i = 0; i < 0x3e8; i++)
            {
                wgsLat = (num5 + num7) / 2.0;
                wgsLng = (num6 + num8) / 2.0;
                LngLatPoint point = this.WGS2GCJ(wgsLat, wgsLng);
                num3 = point.Lat - gcjLat;
                num4 = point.Lng - gcjLng;
                if ((Math.Abs(num3) < num2) && (Math.Abs(num4) < num2))
                {
                    return(new LngLatPoint(wgsLat, wgsLng));
                }
                if (num3 > 0.0)
                {
                    num7 = wgsLat;
                }
                else
                {
                    num5 = wgsLat;
                }
                if (num4 > 0.0)
                {
                    num8 = wgsLng;
                }
                else
                {
                    num6 = wgsLng;
                }
            }
            return(new LngLatPoint(wgsLat, wgsLng));
        }
Esempio n. 4
0
        private LngLatPoint Delta(double lat, double lng)
        {
            LngLatPoint point = new LngLatPoint();
            double      num   = 6378245.0;
            double      num2  = 0.0066934216229659433;
            double      num3  = this.TransformLat(lng - 105.0, lat - 35.0);
            double      num4  = this.TransformLon(lng - 105.0, lat - 35.0);
            double      a     = (lat / 180.0) * 3.1415926535897931;
            double      d     = Math.Sin(a);

            d = 1.0 - ((num2 * d) * d);
            double num7 = Math.Sqrt(d);

            num3      = (num3 * 180.0) / (((num * (1.0 - num2)) / (d * num7)) * 3.1415926535897931);
            num4      = (num4 * 180.0) / (((num / num7) * Math.Cos(a)) * 3.1415926535897931);
            point.Lat = num3;
            point.Lng = num4;
            return(point);
        }