// 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); }
/// <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); }
// 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); }