
关于
适用于 .NET 的 Azure Maps SDK。基于位置的服务,包括地理编码、路由、渲染、地理定位和天气。用于地址搜索、导航、地图瓦片、IP 地理定位和天气数据。
name: azure-maps-search-dotnet description: Azure Maps .NET SDK。基于位置的服务,包括地理编码、路线规划、渲染、地理定位和天气。用于地址搜索、方向导航、地图瓦片、IP 地理定位和天气数据。 risk: unknown source: community date_added: '2026-02-27'
Azure Maps (.NET)
Azure Maps .NET SDK 提供基于位置的服务:地理编码、路线规划、渲染、地理定位和天气。
安装
# 搜索(地理编码、反向地理编码)
dotnet add package Azure.Maps.Search --prerelease
# 路线规划(方向导航、路线矩阵)
dotnet add package Azure.Maps.Routing --prerelease
# 渲染(地图瓦片、静态图像)
dotnet add package Azure.Maps.Rendering --prerelease
# 地理定位(IP 转位置)
dotnet add package Azure.Maps.Geolocation --prerelease
# 天气
dotnet add package Azure.Maps.Weather --prerelease
# 资源管理(账户管理、SAS 令牌)
dotnet add package Azure.ResourceManager.Maps --prerelease
# 认证所需
dotnet add package Azure.Identity
当前版本:
Azure.Maps.Search: v2.0.0-beta.5Azure.Maps.Routing: v1.0.0-beta.4Azure.Maps.Rendering: v2.0.0-beta.1Azure.Maps.Geolocation: v1.0.0-beta.3Azure.ResourceManager.Maps: v1.1.0-beta.2
环境变量
AZURE_MAPS_SUBSCRIPTION_KEY=<your-subscription-key>
AZURE_MAPS_CLIENT_ID=<your-client-id> # 用于 Entra ID 认证
认证
订阅密钥(共享密钥)
using Azure;
using Azure.Maps.Search;
var subscriptionKey = Environment.GetEnvironmentVariable("AZURE_MAPS_SUBSCRIPTION_KEY");
var credential = new AzureKeyCredential(subscriptionKey);
var client = new MapsSearchClient(credential);
Microsoft Entra ID(推荐用于生产环境)
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);
共享访问签名 (SAS)
using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Maps;
using Azure.ResourceManager.Maps.Models;
using Azure.Maps.Search;
// 使用 Azure Resource Manager 进行认证
ArmClient armClient = new ArmClient(new DefaultAzureCredential());
// 获取 Maps 账户资源
ResourceIdentifier mapsAccountResourceId = MapsAccountResource.CreateResourceIdentifier(
subscriptionId, resourceGroupName, accountName);
MapsAccountResource mapsAccount = armClient.GetMapsAccountResource(mapsAccountResourceId);
// 生成 SAS 令牌
MapsAccountSasContent sasContent = new MapsAccountSasContent(
MapsSigningKey.PrimaryKey,
principalId,
maxRatePerSecond: 500,
start: DateTime.UtcNow.ToString("O"),
expiry: DateTime.UtcNow.AddDays(1).ToString("O"));
Response<MapsAccountSasToken> sas = mapsAccount.GetSas(sasContent);
// 使用 SAS 令牌创建客户端
var sasCredential = new AzureSasCredential(sas.Value.AccountSasToken);
var client = new MapsSearchClient(sasCredential);
客户端层次结构
Azure.Maps.Search
└── MapsSearchClient
├── GetGeocoding() → 地址地理编码
├── GetGeocodingBatch() → 批量地理编码
├── GetReverseGeocoding() → 坐标转地址
├── GetReverseGeocodingBatch() → 批量反向地理编码
└── GetPolygon() → 获取边界多边形
Azure.Maps.Routing
└── MapsRoutingClient
├── GetDirections() → 路线方向
├── GetImmediateRouteMatrix() → 路线矩阵(同步,≤100)
├── GetRouteMatrix() → 路线矩阵(异步,≤700)
└── GetRouteRange() → 等时线/可达范围
Azure.Maps.Rendering
└── MapsRenderingClient
├── GetMapTile() → 地图瓦片
├── GetMapStaticImage() → 静态地图图像
└── GetCopyrightCaption() → 版权信息
Azure.Maps.Geolocation
└── MapsGeolocationClient
└── GetCountryCode() → IP 转国家/地区
Azure.Maps.Weather
└── MapsWeatherClient
├── GetCurrentWeatherConditions() → 当前天气
├── GetDailyForecast() → 每日预报
├── GetHourlyForecast() → 每小时预报
└── GetSevereWeatherAlerts() → 天气警报
核心工作流程
1. 地理编码(地址转坐标)
using Azure;
using Azure.Maps.Search;
var credential = new AzureKeyCredential(subscriptionKey);
var client = new MapsSearchClient(credential);
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)}");
Console.WriteLine($"Address: {feature.Properties.Address.FormattedAddress}");
}
兼容工具
Claude CodeCursor
标签
前端开发