Använda modulen Azure Kartor-tjänster
Azure Kartor Web SDK tillhandahåller en tjänstmodul. Den här modulen är ett hjälpbibliotek som gör det enkelt att använda Azure Kartor REST-tjänster i webb- eller Node.js-program med hjälp av JavaScript eller TypeScript.
Kommentar
Tillbakadragning av Azure Kartor Web SDK-tjänstmodul
Azure Kartor Web SDK-tjänstmodulen är nu inaktuell och dras tillbaka den 26-09-30. För att undvika avbrott i tjänsten rekommenderar vi att du migrerar till Azure Kartor JavaScript REST SDK senast 26-09-30. Mer information finns i Utvecklarguide för JavaScript/TypeScript REST SDK (förhandsversion).
Använda tjänstmodulen på en webbsida
Skapa en ny HTML-fil.
Läs in modulen Azure Kartor-tjänster. Du kan läsa in den på något av två sätt:
- Använd den globalt värdbaserade Azure Content Delivery Network-versionen av Modulen Azure Kartor-tjänster. Lägg till en skriptreferens till
<head>
-elementet i filen:
<script src="https://atlas.microsoft.com/sdk/javascript/service/2/atlas-service.min.js"></script>
Du kan också läsa in tjänstmodulen för Azure Kartor Web SDK-källkoden lokalt med hjälp av azure-maps-rest npm-paketet och sedan vara värd för den med din app. Det här paketet innehåller även TypeScript-definitioner. Använd det här kommandot:
npm install azure-maps-rest
Använd sedan en importdeklaration för att lägga till modulen i en källfil:
import * as service from "azure-maps-rest";
- Använd den globalt värdbaserade Azure Content Delivery Network-versionen av Modulen Azure Kartor-tjänster. Lägg till en skriptreferens till
Skapa en autentiseringspipeline. Pipelinen måste skapas innan du kan initiera en tjänst-URL-klientslutpunkt. Använd din egen Azure Kartor-kontonyckel eller Microsoft Entra-autentiseringsuppgifter för att autentisera en Azure Kartor tjänsten Search-klient. I det här exemplet skapas den tjänsten Search URL-klienten.
Om du använder en prenumerationsnyckel för autentisering:
// Get an Azure Maps key at https://azure.com/maps. var subscriptionKey = '<Your Azure Maps Key>'; // Use SubscriptionKeyCredential with a subscription key. var subscriptionKeyCredential = new atlas.service.SubscriptionKeyCredential(subscriptionKey); // Use subscriptionKeyCredential to create a pipeline. var pipeline = atlas.service.MapsURL.newPipeline(subscriptionKeyCredential, { retryOptions: { maxTries: 4 } // Retry options }); // Create an instance of the SearchURL client. var searchURL = new atlas.service.SearchURL(pipeline);
Om du använder Microsoft Entra-ID för autentisering:
// Enter your Azure AD client ID. var clientId = "<Your Azure Active Directory Client Id>"; // Use TokenCredential with OAuth token (Azure AD or Anonymous). var aadToken = await getAadToken(); var tokenCredential = new atlas.service.TokenCredential(clientId, aadToken); // Create a repeating time-out that will renew the Azure AD token. // This time-out must be cleared when the TokenCredential object is no longer needed. // If the time-out is not cleared, the memory used by the TokenCredential will never be reclaimed. var renewToken = async () => { try { console.log("Renewing token"); var token = await getAadToken(); tokenCredential.token = token; tokenRenewalTimer = setTimeout(renewToken, getExpiration(token)); } catch (error) { console.log("Caught error when renewing token"); clearTimeout(tokenRenewalTimer); throw error; } } tokenRenewalTimer = setTimeout(renewToken, getExpiration(aadToken)); // Use tokenCredential to create a pipeline. var pipeline = atlas.service.MapsURL.newPipeline(tokenCredential, { retryOptions: { maxTries: 4 } // Retry options }); // Create an instance of the SearchURL client. var searchURL = new atlas.service.SearchURL(pipeline); function getAadToken() { // Use the signed-in auth context to get a token. return new Promise((resolve, reject) => { // The resource should always be https://atlas.microsoft.com/. const resource = "https://atlas.microsoft.com/"; authContext.acquireToken(resource, (error, token) => { if (error) { reject(error); } else { resolve(token); } }); }) } function getExpiration(jwtToken) { // Decode the JSON Web Token (JWT) to get the expiration time stamp. const json = atob(jwtToken.split(".")[1]); const decode = JSON.parse(json); // Return the milliseconds remaining until the token must be renewed. // Reduce the time until renewal by 5 minutes to avoid using an expired token. // The exp property is the time stamp of the expiration, in seconds. const renewSkew = 300000; return (1000 * decode.exp) - Date.now() - renewSkew; }
Mer information finns i Autentisering med Azure Kartor.
Följande kod använder den nyligen skapade Azure Kartor tjänsten Search URL-klienten för att geokoda en adress: "1 Microsoft Way, Redmond, WA". Koden använder
searchAddress
funktionen och visar resultatet som en tabell i sidtexten.// Search for "1 microsoft way, redmond, wa". searchURL.searchAddress(atlas.service.Aborter.timeout(10000), '1 microsoft way, redmond, wa') .then(response => { var html = []; // Display the total results. html.push('Total results: ', response.summary.numResults, '<br/><br/>'); // Create a table of the results. html.push('<table><tr><td></td><td>Result</td><td>Latitude</td><td>Longitude</td></tr>'); for(var i=0;i<response.results.length;i++){ html.push('<tr><td>', (i+1), '.</td><td>', response.results[i].address.freeformAddress, '</td><td>', response.results[i].position.lat, '</td><td>', response.results[i].position.lon, '</td></tr>'); } html.push('</table>'); // Add the resulting HTML to the body of the page. document.body.innerHTML = html.join(''); });
Här är det fullständiga kodexemplet som körs:
<html>
<head>
<script src="https://atlas.microsoft.com/sdk/javascript/service/2/atlas-service.min.js"></script>
<script type="text/javascript">
// Get an Azure Maps key at https://azure.com/maps.
var subscriptionKey = '{Your-Azure-Maps-Subscription-key}';
// Use SubscriptionKeyCredential with a subscription key.
var subscriptionKeyCredential = new atlas.service.SubscriptionKeyCredential(subscriptionKey);
// Use subscriptionKeyCredential to create a pipeline.
var pipeline = atlas.service.MapsURL.newPipeline(subscriptionKeyCredential, {
retryOptions: { maxTries: 4 } // Retry options
});
// Create an instance of the SearchURL client.
var searchURL = new atlas.service.SearchURL(pipeline);
// Search for "1 microsoft way, redmond, wa".
searchURL.searchAddress(atlas.service.Aborter.timeout(10000), '1 microsoft way, redmond, wa')
.then(response => {
var html = [];
// Display the total results.
html.push('Total results: ', response.summary.numResults, '<br/><br/>');
// Create a table of the results.
html.push('<table><tr><td></td><td>Result</td><td>Latitude</td><td>Longitude</td></tr>');
for(var i=0;i<response.results.length;i++){
html.push('<tr><td>', (i+1), '.</td><td>',
response.results[i].address.freeformAddress,
'</td><td>',
response.results[i].position.lat,
'</td><td>',
response.results[i].position.lon,
'</td></tr>');
}
html.push('</table>');
// Add the resulting HTML to the body of the page.
document.body.innerHTML = html.join('');
});
</script>
</head>
<style>
table {
border: 1px solid black;
border-collapse: collapse;
}
td, th {
border: 1px solid black;
padding: 5px;
}
</style>
<body> </body>
</html>
Följande bild är en skärmbild som visar resultatet av den här exempelkoden, en tabell med den adress som söks efter, tillsammans med de resulterande koordinaterna.
Molnstöd för Azure Government
Azure Kartor Web SDK stöder Azure Government-molnet. Alla JavaScript- och CSS-URL:er som används för att komma åt Azure Kartor Web SDK förblir desamma, men följande uppgifter måste utföras för att ansluta till Azure Government-molnversionen av Azure Kartor-plattformen.
När du använder den interaktiva kartkontrollen lägger du till följande kodrad innan du skapar en instans av Map
klassen.
atlas.setDomain('atlas.azure.us');
Se till att använda en Azure Kartor-autentiseringsinformation från Azure Government-molnplattformen när du autentiserar kartan och tjänsterna.
Domänen för tjänsterna måste anges när du skapar en instans av en API URL-slutpunkt. Följande kod skapar till exempel en instans av SearchURL
klassen och pekar domänen till Azure Government-molnet.
var searchURL = new atlas.service.SearchURL(pipeline, 'atlas.azure.us');
Om du har direkt åtkomst till Azure Kartor REST-tjänsterna ändrar du URL-domänen till atlas.azure.us
. Om du till exempel använder sök-API-tjänsten ändrar du URL-domänen från https://atlas.microsoft.com/search/
till https://atlas.azure.us/search/
.
Nästa steg
Läs mer om de klasser och metoder som används i den här artikeln:
Fler kodexempel som använder tjänstmodulen finns i följande artiklar: