You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.3 KiB
2.3 KiB
LINGYUN.Abp.Location
介绍
LINGYUN.Abp.Location 是一个位置服务基础模块,提供了地理位置相关的功能,包括地理编码(正向/反向)、距离计算等功能。
功能
- 地理编码(Geocoding)和反向地理编码(Reverse Geocoding)
- 位置距离计算(基于Google算法,误差<0.2米)
- 位置偏移量计算
- 支持POI(兴趣点)和道路信息
- 可扩展的位置解析提供程序
安装
dotnet add package LINGYUN.Abp.Location
使用
- 添加
[DependsOn(typeof(AbpLocationModule))]到你的模块类上。
[DependsOn(typeof(AbpLocationModule))]
public class YourModule : AbpModule
{
// ...
}
- 注入并使用位置解析服务:
public class YourLocationService
{
private readonly ILocationResolveProvider _locationProvider;
public YourLocationService(ILocationResolveProvider locationProvider)
{
_locationProvider = locationProvider;
}
public async Task<GecodeLocation> GeocodeAsync(string address)
{
return await _locationProvider.GeocodeAsync(address);
}
public async Task<ReGeocodeLocation> ReGeocodeAsync(double lat, double lng)
{
return await _locationProvider.ReGeocodeAsync(lat, lng);
}
}
高级用法
1. 距离计算
// 计算两个位置之间的距离
var location1 = new Location { Latitude = 39.9042, Longitude = 116.4074 }; // 北京
var location2 = new Location { Latitude = 31.2304, Longitude = 121.4737 }; // 上海
double distance = Location.CalcDistance(location1, location2); // 返回单位:米
2. 计算位置偏移范围
var location = new Location { Latitude = 39.9042, Longitude = 116.4074 };
// 计算指定距离(米)的偏移范围
var position = Location.CalcOffsetDistance(location, 1000); // 1公里范围
3. 自定义位置解析提供程序
public class CustomLocationProvider : ILocationResolveProvider
{
public async Task<GecodeLocation> GeocodeAsync(string address)
{
// 实现地理编码逻辑
}
public async Task<ReGeocodeLocation> ReGeocodeAsync(double lat, double lng)
{
// 实现反向地理编码逻辑
}
}