Skip to content

如何在 .NET 项目中集成 Azure Maps 空间地理服务

通过集成 Azure Maps SDK for .NET,开发者可以在应用程序中快速实现地址搜索(地理编码)、实时路径规划、静态地图渲染以及基于 IP 的地理位置解析。

为什么需要这个技能

在开发需要位置感知(LBS)功能的软件时,手动处理经纬度转换、计算行车路线或获取天气预报极其复杂。Azure Maps 提供了工业级的地理空间数据,通过 .NET SDK,开发者无需直接调用复杂的 REST API,即可利用强类型客户端实现高效的地理信息处理。

适用场景

  • 物流与配送:计算配送路径、估算到达时间(ETA)或生成配送区域多边形。
  • 电商与零售:根据用户 IP 自动判断所在国家/地区,或将用户填写的地址转换为坐标。
  • 数据可视化:在应用中嵌入静态地图切片或根据坐标点渲染地图图像。
  • 环境监测:实时获取特定坐标点的天气状况和预警信息。

核心工作流

1. 安装与鉴权

根据所需功能安装对应的预发布包(Prerelease):

bash
# 地理编码
dotnet add package Azure.Maps.Search --prerelease
# 路线规划
dotnet add package Azure.Maps.Routing --prerelease
# 身份认证
dotnet add package Azure.Identity

推荐在生产环境下使用 Microsoft Entra ID 进行身份验证:

csharp
using Azure.Identity;
using Azure.Maps.Search;

var credential = new DefaultAzureCredential();
var clientId = Environment.GetEnvironmentVariable("AZURE_MAPS_CLIENT_ID");
var client = new MapsSearchClient(credential, clientId);

2. 地理编码(地址 坐标)

将文本地址转换为经纬度,或进行反向地理编码:

csharp
// 正向地理编码
Response<GeocodingResponse> result = client.GetGeocoding("1 Microsoft Way, Redmond, WA 98052");
foreach (var feature in result.Value.Features)
{
    Console.WriteLine($"Coordinates: {string.Join(",", feature.Geometry.Coordinates)}");
}

3. 路线规划(Routing)

定义起点和终点,获取最佳路径详情:

csharp
var routingClient = new MapsRoutingClient(new AzureKeyCredential(subscriptionKey));
List<GeoPosition> routePoints = new List<GeoPosition>()
{
    new GeoPosition(-122.34, 47.61), 
    new GeoPosition(-122.13, 47.64)
};

RouteDirectionQuery query = new RouteDirectionQuery(routePoints);
Response<RouteDirections> result = routingClient.GetDirections(query);
Console.WriteLine($"Distance: {result.Value.Routes[0].Summary.LengthInMeters} meters");

4. 实用功能调用

  • IP 定位:使用 MapsGeolocationClient.GetCountryCode() 将 IP 转换为国家代码。
  • 地图切片:使用 MapsRenderingClient.GetMapTile() 获取特定缩放层级的地图图片。
  • 天气查询:使用 MapsWeatherClient.GetCurrentWeatherConditions() 获取实时气象。

下载和安装

下载 azure-maps-search-dotnet 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐