发布:2024/3/11 22:27:33作者:管理员 来源:本站 浏览次数:399
在C#中,要计算两个经纬度点之间的距离是否小于2公里,你可以使用Haversine公式。以下是一个方法,它接受两个经纬度点作为参数,并返回它们之间的距离(以公里为单位)。如果这个距离小于2公里,方法将返回true,否则返回false。
using System;
public class GeoCalculator
{
const double EARTH_RADIUS = 6371; // 地球半径,单位为公里
public static bool IsWithin2Km(double lat1, double lon1, double lat2, double lon2)
{
double deltaLat = ToRadians(lat2 - lat1);
double deltaLon = ToRadians(lon2 - lon2);
double a = Math.Sin(deltaLat / 2) * Math.Sin(deltaLat / 2) +
Math.Cos(ToRadians(lat1)) * Math.Cos(ToRadians(lat2)) *
Math.Sin(deltaLon / 2) * Math.Sin(deltaLon / 2);
double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
double distance = EARTH_RADIUS * c;
return distance < 2;
}
private static double ToRadians(double degrees)
{
return degrees * (Math.PI / 180);
}
}
// 使用示例
// 经纬度1 (lat1, lon1)
// 经纬度2 (lat2, lon2)
bool isWithin2Km = GeoCalculator.IsWithin2Km(lat1, lon1, lat2, lon2);
在这个代码中,IsWithin2Km方法计算两点之间的大圆距离,如果小于2公里,则返回true。EARTH_RADIUS是地球半径,以公里为单位,常用值为6371公里。ToRadians方法将度数转换为弧度。Haversine公式用于计算大圆距离,这是因为地球是一个非完美的球形,而这个公式可以很好地逼近实际距离。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4