首页 > 代码库 > 计算2个坐标(经纬度)之间的距离,.Net
计算2个坐标(经纬度)之间的距离,.Net
.Net 中计算2个点之间的距离的方法,或者叫计算2个坐标,2个经纬度之间的距离。
代码如下:
1 /// <summary> 2 /// Calculates the distance between two geographics locations 3 /// </summary> 4 public static class GeoDistance 5 { 6 public static double Between(double latitude1, double longitude1, double latitude2, double longitude2, 7 DistanceUnits units = DistanceUnits.Kilometers) 8 { 9 double a1 = latitude1 * RadianConversionFactor;10 double b1 = longitude1 * RadianConversionFactor;11 double a2 = latitude2 * RadianConversionFactor;12 double b2 = longitude2 * RadianConversionFactor;13 14 double distance =15 Math.Acos(Math.Cos(a1) * Math.Cos(b1) * Math.Cos(a2) * Math.Cos(b2) +16 Math.Cos(a1) * Math.Sin(b1) * Math.Cos(a2) * Math.Sin(b2) + Math.Sin(a1) * Math.Sin(a2)) * DistanceConstants[units];17 18 return distance;19 }20 21 private const double RadianConversionFactor = Math.PI / 180;22 23 private static readonly Dictionary<DistanceUnits, double> DistanceConstants = new Dictionary<DistanceUnits, double>(3) {24 { DistanceUnits.Miles, 3963.1 },25 { DistanceUnits.NauticalMiles, 3443.9 },26 { DistanceUnits.Kilometers, 6378 }27 };28 }29 30 public enum DistanceUnits31 {32 Miles,33 NauticalMiles,34 Kilometers,35 }
代码很简单,但是费了不少劲。就是还没测试效率怎么样。如果有高效的算法,请不要吝啬指教!!!
计算2个坐标(经纬度)之间的距离,.Net
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。