コード例 #1
0
 // Methods
 public static double DistanceOfTwoEarthPoints(double lng1, double lat1, double lng2, double lat2, GaussSphere gs)
 {
     double d = Rad(lat1);
     double num2 = Rad(lat2);
     double num3 = d - num2;
     double num4 = Rad(lng1) - Rad(lng2);
     double num5 = 2.0 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(num3 / 2.0), 2.0) + ((Math.Cos(d) * Math.Cos(num2)) * Math.Pow(Math.Sin(num4 / 2.0), 2.0))));
     num5 *= (gs == GaussSphere.WGS84) ? 6378137.0 : ((gs == GaussSphere.Xian80) ? 6378140.0 : 6378245.0);
     return (Math.Round((double)(num5 * 10000.0)) / 10000.0);
 }
コード例 #2
0
        /// <summary>
        /// 计算两坐标点间的距离,返回以米(m)为单位的距离
        /// </summary>
        /// <param name="lng1"></param>
        /// <param name="lat1"></param>
        /// <param name="lng2"></param>
        /// <param name="lat2"></param>
        /// <param name="gs"></param>
        /// <returns></returns>
        public static double DistanceOfTwoPoints(double lng1, double lat1, double lng2, double lat2, GaussSphere gs = GaussSphere.WGS84)
        {
            double radLat1 = Rad(lat1);
            double radLat2 = Rad(lat2);
            double a       = radLat1 - radLat2;
            double b       = Rad(lng1) - Rad(lng2);
            double s       = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +
                                                     Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));

            s = s * (gs == GaussSphere.WGS84 ? 6378137.0 : (gs == GaussSphere.Xian80 ? 6378140.0 : 6378245.0));
            s = Math.Round(s * 10000) / 10000000;
            return(s);
        }
コード例 #3
0
        // Methods

        public static double DistanceOfTwoEarthPoints(double lng1, double lat1, double lng2, double lat2, GaussSphere gs)
        {
            double d    = Rad(lat1);
            double num2 = Rad(lat2);
            double num3 = d - num2;
            double num4 = Rad(lng1) - Rad(lng2);
            double num5 = 2.0 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(num3 / 2.0), 2.0) + ((Math.Cos(d) * Math.Cos(num2)) * Math.Pow(Math.Sin(num4 / 2.0), 2.0))));

            num5 *= (gs == GaussSphere.WGS84) ? 6378137.0 : ((gs == GaussSphere.Xian80) ? 6378140.0 : 6378245.0);
            return(Math.Round((double)(num5 * 10000.0)) / 10000.0);
        }