.net 根据经纬度计算距离和排序
时间: 2023-11-07 20:05:35 浏览: 41
在 .NET 中,可以使用 System.Device.Location 命名空间下的 GeoCoordinate 类来计算两个地理位置之间的距离,而排序则可以使用 LINQ 中的 OrderBy 方法。
以下是一个示例代码,展示如何根据经纬度计算距离并按距离排序:
```csharp
using System;
using System.Collections.Generic;
using System.Device.Location;
using System.Linq;
class Program
{
static void Main(string[] args)
{
// 创建两个地理位置
var location1 = new GeoCoordinate(39.92, 116.46); // 北京
var location2 = new GeoCoordinate(31.23, 121.47); // 上海
// 计算距离(单位:米)
var distance = location1.GetDistanceTo(location2);
Console.WriteLine($"距离为:{distance} 米");
// 创建多个地理位置
var locations = new List<GeoCoordinate>
{
new GeoCoordinate(39.92, 116.46), // 北京
new GeoCoordinate(31.23, 121.47), // 上海
new GeoCoordinate(22.27, 114.17), // 香港
new GeoCoordinate(22.54, 114.06), // 深圳
};
// 按距离排序
var sortedLocations = locations.OrderBy(l => l.GetDistanceTo(location1));
// 输出排序结果
foreach (var location in sortedLocations)
{
Console.WriteLine($"距离为:{location.GetDistanceTo(location1)} 米");
}
}
}
```
需要注意的是,以上示例代码中计算距离的单位是米。如果需要使用其他单位(如千米或英里),可以使用 GeoCoordinate 中提供的转换方法进行转换。