diff --git a/aspnet-core/framework/common/LINGYUN.Abp.Location/README.EN.md b/aspnet-core/framework/common/LINGYUN.Abp.Location/README.EN.md new file mode 100644 index 000000000..3c66cb2ec --- /dev/null +++ b/aspnet-core/framework/common/LINGYUN.Abp.Location/README.EN.md @@ -0,0 +1,95 @@ +# LINGYUN.Abp.Location + +## Introduction + +`LINGYUN.Abp.Location` is a location service foundation module that provides geographic location-related functionality, including geocoding (forward/reverse), distance calculation, and more. + +## Features + +* Geocoding and Reverse Geocoding +* Location distance calculation (based on Google algorithm, error <0.2m) +* Location offset calculation +* Support for POI (Points of Interest) and road information +* Extensible location resolution providers + +## Installation + +```bash +dotnet add package LINGYUN.Abp.Location +``` + +## Usage + +1. Add `[DependsOn(typeof(AbpLocationModule))]` to your module class. + +```csharp +[DependsOn(typeof(AbpLocationModule))] +public class YourModule : AbpModule +{ + // ... +} +``` + +2. Inject and use the location resolution service: + +```csharp +public class YourLocationService +{ + private readonly ILocationResolveProvider _locationProvider; + + public YourLocationService(ILocationResolveProvider locationProvider) + { + _locationProvider = locationProvider; + } + + public async Task GeocodeAsync(string address) + { + return await _locationProvider.GeocodeAsync(address); + } + + public async Task ReGeocodeAsync(double lat, double lng) + { + return await _locationProvider.ReGeocodeAsync(lat, lng); + } +} +``` + +## Advanced Usage + +### 1. Distance Calculation + +```csharp +// Calculate distance between two locations +var location1 = new Location { Latitude = 39.9042, Longitude = 116.4074 }; // Beijing +var location2 = new Location { Latitude = 31.2304, Longitude = 121.4737 }; // Shanghai +double distance = Location.CalcDistance(location1, location2); // Returns distance in meters +``` + +### 2. Calculate Location Offset Range + +```csharp +var location = new Location { Latitude = 39.9042, Longitude = 116.4074 }; +// Calculate offset range for specified distance (meters) +var position = Location.CalcOffsetDistance(location, 1000); // 1km range +``` + +### 3. Custom Location Resolution Provider + +```csharp +public class CustomLocationProvider : ILocationResolveProvider +{ + public async Task GeocodeAsync(string address) + { + // Implement geocoding logic + } + + public async Task ReGeocodeAsync(double lat, double lng) + { + // Implement reverse geocoding logic + } +} +``` + +## Links + +* [中文文档](./README.md) diff --git a/aspnet-core/framework/common/LINGYUN.Abp.Location/README.md b/aspnet-core/framework/common/LINGYUN.Abp.Location/README.md new file mode 100644 index 000000000..fa8cf8d55 --- /dev/null +++ b/aspnet-core/framework/common/LINGYUN.Abp.Location/README.md @@ -0,0 +1,95 @@ +# LINGYUN.Abp.Location + +## 介绍 + +`LINGYUN.Abp.Location` 是一个位置服务基础模块,提供了地理位置相关的功能,包括地理编码(正向/反向)、距离计算等功能。 + +## 功能 + +* 地理编码(Geocoding)和反向地理编码(Reverse Geocoding) +* 位置距离计算(基于Google算法,误差<0.2米) +* 位置偏移量计算 +* 支持POI(兴趣点)和道路信息 +* 可扩展的位置解析提供程序 + +## 安装 + +```bash +dotnet add package LINGYUN.Abp.Location +``` + +## 使用 + +1. 添加 `[DependsOn(typeof(AbpLocationModule))]` 到你的模块类上。 + +```csharp +[DependsOn(typeof(AbpLocationModule))] +public class YourModule : AbpModule +{ + // ... +} +``` + +2. 注入并使用位置解析服务: + +```csharp +public class YourLocationService +{ + private readonly ILocationResolveProvider _locationProvider; + + public YourLocationService(ILocationResolveProvider locationProvider) + { + _locationProvider = locationProvider; + } + + public async Task GeocodeAsync(string address) + { + return await _locationProvider.GeocodeAsync(address); + } + + public async Task ReGeocodeAsync(double lat, double lng) + { + return await _locationProvider.ReGeocodeAsync(lat, lng); + } +} +``` + +## 高级用法 + +### 1. 距离计算 + +```csharp +// 计算两个位置之间的距离 +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. 计算位置偏移范围 + +```csharp +var location = new Location { Latitude = 39.9042, Longitude = 116.4074 }; +// 计算指定距离(米)的偏移范围 +var position = Location.CalcOffsetDistance(location, 1000); // 1公里范围 +``` + +### 3. 自定义位置解析提供程序 + +```csharp +public class CustomLocationProvider : ILocationResolveProvider +{ + public async Task GeocodeAsync(string address) + { + // 实现地理编码逻辑 + } + + public async Task ReGeocodeAsync(double lat, double lng) + { + // 实现反向地理编码逻辑 + } +} +``` + +## 链接 + +* [English document](./README.EN.md)