C# REST SDK fejlesztői útmutató
Az Azure Maps C# SDK támogatja az Azure Maps Rest API-ban elérhető funkciókat, például a címek keresését, a különböző koordináták közötti útválasztást és egy adott IP-cím földrajzi helyének lekérését. Ez a cikk a C# REST SDK-t mutatja be példákkal a helyérzékeny alkalmazások C#-ban való létrehozásának megkezdéséhez, amely magában foglalja az Azure Maps teljesítményét.
Feljegyzés
Az Azure Maps C# SDK támogatja a .NET standard 2.0-s vagy újabb verziójával kompatibilis .NET-verziót. Interaktív táblázatért tekintse meg a .NET Standard verzióit.
Előfeltételek
- Azure Maps-fiók.
- Előfizetési kulcs vagy más hitelesítési mód az Azure Maps használatával.
- .NET standard 2.0-s vagy újabb verzió.
Tipp.
Az Azure Maps-fiókot programozott módon is létrehozhatja, az Alábbi példa az Azure CLI használatával:
az maps account create --kind "Gen2" --account-name "myMapAccountName" --resource-group "<resource group>" --sku "G2"
.NET-projekt létrehozása
Az alábbi PowerShell-kódrészlet bemutatja, hogyan hozhat létre konzolprogramot MapsDemo
a .NET 7.0-val a PowerShell használatával. Keretrendszerként bármely .NET standard 2.0-kompatibilis verziót használhat.
dotnet new console -lang C# -n MapsDemo -f net7.0
cd MapsDemo
Szükséges csomagok telepítése
Az Azure Maps C# SDK használatához telepíteni kell a szükséges csomagokat. Mindegyik Azure Maps-szolgáltatás, beleértve a keresést, az útválasztást, a renderelést és a földrajzi helymeghatározást, a saját csomagjukban található. Mivel az Azure Maps C# SDK nyilvános előzetes verzióban érhető el, hozzá kell adnia a jelzőt --prerelease
:
dotnet add package Azure.Maps.Rendering --prerelease
dotnet add package Azure.Maps.Routing --prerelease
dotnet add package Azure.Maps.Search --prerelease
dotnet add package Azure.Maps.Geolocation --prerelease
Azure Maps-szolgáltatások
Szolgáltatásnév | NuGet-csomag | Minták |
---|---|---|
Keresés | Azure.Maps.Search | keresési minták |
Útválasztás | Azure.Maps.Routing | útválasztási minták |
Renderelés | Azure.Maps.Rendering | renderelési minta |
Földrajzi hely | Azure.Maps.Geolocation | geolokációs minta |
MapsSearchClient létrehozása és hitelesítése
Az Azure Maps Search API-k eléréséhez használt ügyfélobjektumnak vagy egy AzureKeyCredential
objektumnak kell hitelesítenie az Azure Maps-előfizetési kulcs használatakor, vagy az TokenCredential
Azure Maps-ügyfélazonosítóval rendelkező objektumot a Microsoft Entra ID-val történő hitelesítéskor. A hitelesítéssel kapcsolatos további információkért lásd: Hitelesítés az Azure Maps használatával.
Microsoft Entra hitelesítő adatok használata
Az Azure Identity-kódtár használatával hitelesíthet a Microsoft Entra-azonosítóval. A DefaultAzureCredential szolgáltató használatához telepítenie kell az Azure Identity ügyfélkódtárat a .NET-hez:
dotnet add package Azure.Identity
Regisztrálnia kell az új Microsoft Entra-alkalmazást, és hozzáférést kell adnia az Azure Mapshez úgy, hogy hozzárendeli a szükséges szerepkört a szolgáltatásnévhez. További információ: Démon gazdagépe nem Azure-erőforrásokon. A rendszer visszaadja az alkalmazás (ügyfél) azonosítóját, a címtár (bérlő) azonosítóját és az ügyfél titkos kódját. Másolja ki ezeket az értékeket, és tárolja őket biztonságos helyen. Az alábbi lépésekben szüksége lesz rájuk.
Állítsa be az alkalmazás (ügyfél) azonosítójának, a Címtár (bérlő) azonosítójának és a Microsoft Entra-alkalmazás ügyféltitkának értékeit, valamint a leképezési erőforrás ügyfélazonosítóját környezeti változóként:
Környezeti változó | Leírás |
---|---|
AZURE_CLIENT_ID | Alkalmazás (ügyfél) azonosítója a regisztrált alkalmazásban |
AZURE_CLIENT_SECRET | Az ügyfél titkos kódjának értéke a regisztrált alkalmazásban |
AZURE_TENANT_ID | Címtár (bérlő) azonosítója a regisztrált alkalmazásban |
MAPS_CLIENT_ID | Az Azure Map-erőforrás ügyfélazonosítója |
Most már létrehozhat környezeti változókat a PowerShellben az alábbi értékek tárolásához:
$Env:AZURE_CLIENT_ID="Application (client) ID"
$Env:AZURE_CLIENT_SECRET="your client secret"
$Env:AZURE_TENANT_ID="your Directory (tenant) ID"
$Env:MAPS_CLIENT_ID="your Azure Maps client ID"
A környezeti változók beállítása után használhatja őket a programban az AzureMapsSearch
ügyfél példányosítására:
using System;
using Azure.Identity;
using Azure.Maps.Search;
var credential = new DefaultAzureCredential();
var clientId = Environment.GetEnvironmentVariable("MAPS_CLIENT_ID");
var client = new MapsSearchClient(credential, clientId);
Fontos
Az előző kódrészletben létrehozott egyéb környezeti változókra a kódmintában DefaultAzureCredential()
nem használt. Ha nem megfelelően állítja be ezeket a környezeti változókat, ugyanazokkal az elnevezési konvenciók használatával futásidejű hibákat fog kapni. Ha például hiányzik AZURE_CLIENT_ID
vagy érvénytelen, hibaüzenet jelenik InvalidAuthenticationTokenTenant
meg.
Előfizetési kulcs hitelesítő adatainak használata
Az Azure Maps-előfizetési kulccsal hitelesíthet. Az előfizetési kulcs az Azure Maps-fiók Hitelesítés szakaszában található, az alábbi képernyőképen látható módon:
Most létrehozhat környezeti változókat a PowerShellben az előfizetési kulcs tárolásához:
$Env:SUBSCRIPTION_KEY="your subscription key"
A környezeti változó létrehozása után a következő kódban érheti el:
using System;
using Azure;
using Azure.Maps.Search;
// Use Azure Maps subscription key authentication
var subscriptionKey = Environment.GetEnvironmentVariable("SUBSCRIPTION_KEY") ?? string.Empty;
var credential = new AzureKeyCredential(subscriptionKey);
var client = new MapsSearchClient(credential);
Cím geokódolása
Hívja meg a GetGeocoding
metódust egy cím koordinátájának lekéréséhez.
using System;
using Azure;
using Azure.Maps.Search;
using Azure.Maps.Search.Models;
// Use Azure Maps subscription key authentication
var subscriptionKey = Environment.GetEnvironmentVariable("SUBSCRIPTION_KEY") ?? string.Empty;
var credential = new AzureKeyCredential(subscriptionKey);
var client = new MapsSearchClient(credential);
Response<GeocodingResponse> searchResult = client.GetGeocoding(
"1 Microsoft Way, Redmond, WA 98052");
for (int i = 0; i < searchResult.Value.Features.Count; i++)
{
Console.WriteLine("Coordinate:" + string.Join(",", searchResult.Value.Features[i].Geometry.Coordinates));
}
Batch geokódcímek
Ez a minta bemutatja, hogyan hajthat végre kötegelt keresési címet.
using System;
using Azure;
using Azure.Maps.Search;
using System.Collections.Generic;
using Azure.Maps.Search.Models;
using Azure.Maps.Search.Models.Queries;
// Use Azure Maps subscription key authentication
var subscriptionKey = Environment.GetEnvironmentVariable("SUBSCRIPTION_KEY") ?? string.Empty;
var credential = new AzureKeyCredential(subscriptionKey);
var client = new MapsSearchClient(credential);
List<GeocodingQuery> queries = new List<GeocodingQuery>
{
new GeocodingQuery()
{
Query ="15171 NE 24th St, Redmond, WA 98052, United States"
},
new GeocodingQuery()
{
AddressLine = "400 Broad St"
},
};
Response<GeocodingBatchResponse> results = client.GetGeocodingBatch(queries);
//Print coordinates
for (var i = 0; i < results.Value.BatchItems.Count; i++)
{
for (var j = 0; j < results.Value.BatchItems[i].Features.Count; j++)
{
Console.WriteLine("Coordinates: " + string.Join(",", results.Value.BatchItems[i].Features[j].Geometry.Coordinates));
}
}
Koordináták fordított geokódolása
A koordinátákat lefordíthatja ember által olvasható utcacímekké. Ezt a folyamatot fordított geokódolásnak is nevezik.
using System;
using Azure;
using Azure.Maps.Search;
using Azure.Core.GeoJson;
using Azure.Maps.Search.Models;
// Use Azure Maps subscription key authentication
var subscriptionKey = Environment.GetEnvironmentVariable("SUBSCRIPTION_KEY") ?? string.Empty;
var credential = new AzureKeyCredential(subscriptionKey);
var client = new MapsSearchClient(credential);
GeoPosition coordinates = new GeoPosition(-122.138685, 47.6305637);
Response<GeocodingResponse> result = client.GetReverseGeocoding(coordinates);
//Print addresses
for (int i = 0; i < result.Value.Features.Count; i++)
{
Console.WriteLine(result.Value.Features[i].Properties.Address.FormattedAddress);
}
Kötegelt fordított geokód egy koordinátakészlet
Az Azure Maps Search emellett kötegelt lekérdezési API-kat is biztosít. A Reverse Geocoding Batch API egyetlen API-hívással több lekérdezést küld a Reverse Geocoding API-nak. Az API-val a hívó legfeljebb 100 lekérdezést köthet össze.
using System;
using Azure;
using Azure.Maps.Search;
using System.Collections.Generic;
using Azure.Core.GeoJson;
using Azure.Maps.Search.Models;
using Azure.Maps.Search.Models.Queries;
// Use Azure Maps subscription key authentication
var subscriptionKey = Environment.GetEnvironmentVariable("SUBSCRIPTION_KEY") ?? string.Empty;
var credential = new AzureKeyCredential(subscriptionKey);
var client = new MapsSearchClient(credential);
List<ReverseGeocodingQuery> items = new List<ReverseGeocodingQuery>
{
new ReverseGeocodingQuery()
{
Coordinates = new GeoPosition(-122.349309, 47.620498)
},
new ReverseGeocodingQuery()
{
Coordinates = new GeoPosition(-122.138679, 47.630356),
ResultTypes = new List<ReverseGeocodingResultTypeEnum>(){ ReverseGeocodingResultTypeEnum.Address, ReverseGeocodingResultTypeEnum.Neighborhood }
},
};
Response<GeocodingBatchResponse> result = client.GetReverseGeocodingBatch(items);
//Print addresses
for (var i = 0; i < result.Value.BatchItems.Count; i++)
{
Console.WriteLine(result.Value.BatchItems[i].Features[0].Properties.Address.AddressLine);
Console.WriteLine(result.Value.BatchItems[i].Features[0].Properties.Address.Neighborhood);
}
Sokszögek lekérése egy adott helyhez
Ez a minta bemutatja, hogyan kereshet sokszögben.
using System;
using Azure;
using Azure.Maps.Search;
using Azure.Core.GeoJson;
using Azure.Maps.Search.Models;
using Azure.Maps.Search.Models.Options;
// Use Azure Maps subscription key authentication
var subscriptionKey = Environment.GetEnvironmentVariable("SUBSCRIPTION_KEY") ?? string.Empty;
var credential = new AzureKeyCredential(subscriptionKey);
var client = new MapsSearchClient(credential);
GetPolygonOptions options = new GetPolygonOptions()
{
Coordinates = new GeoPosition(-122.204141, 47.61256),
ResultType = BoundaryResultTypeEnum.Locality,
Resolution = ResolutionEnum.Small,
};
Response<Boundary> result = client.GetPolygon(options);
var count = ((GeoJsonPolygon)((GeoJsonGeometryCollection)result.Value.Geometry).Geometries[0]).Coordinates.Count;
for (var i = 0; i < count; i++)
{
var coorCount = ((GeoJsonPolygon)((GeoJsonGeometryCollection)result.Value.Geometry).Geometries[0]).Coordinates[i].Count;
for (var j = 0; j < coorCount; j++)
{
Console.WriteLine(string.Join(",",((GeoJsonPolygon)((GeoJsonGeometryCollection)result.Value.Geometry).Geometries[0]).Coordinates[i][j]));
}
}
V1 SDK-k használata kereséshez és rendereléshez
A Search v1 használatával kapcsolatos további információkért tekintse meg az Azure Maps Search .NET-hez készült ügyfélkódtárát. A Render v1 használatával kapcsolatos további információkért lásd: Azure Maps Render ügyfélkódtár a .NET-hez.
További információk
Az Azure.Maps-névtér a .NET dokumentációjában.