Megosztás a következőn keresztül:


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

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:

Képernyőkép az Azure Maps-előfizetési kulcsról az Azure Portalon.

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 Namespace a .NET dokumentációjában.