namespace LY.App.Common { public static class GisHelper { /// /// 计算两点之间的距离 /// /// /// /// /// /// public static double HaversineDistance(double lat1, double lon1, double lat2, double lon2) { const double R = 6371000.0; // 地球半径(单位:米) double dLat = ToRadians(lat2 - lat1); double dLon = ToRadians(lon2 - lon1); double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Cos(ToRadians(lat1)) * Math.Cos(ToRadians(lat2)) * Math.Sin(dLon / 2) * Math.Sin(dLon / 2); double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a)); return R * c; } static double ToRadians(double degrees) => degrees * Math.PI / 180.0; } }