Använda modulen Azure Kartor Services
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.
Använda tjänstmodulen på en webbsida
Skapa en ny HTML-fil.
Läs in modulen Azure Kartor Services. Du kan läsa in den på något av två sätt:
- Använd den globalt värd-, Azure Content Delivery Network-versionen av modulen Azure Kartor services. 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 npm-paketet azure-maps-rest och sedan använda appen som värd. Det här paketet innehåller även TypeScript-definitioner. Använd det här kommandot:
npm install azure-maps-restLägg sedan till en skriptreferens till
<head>-elementet i filen:<script src="node_modules/azure-maps-rest/dist/atlas-service.min.js"></script>
- Använd den globalt värd-, Azure Content Delivery Network-versionen av modulen Azure Kartor services. Lägg till en skriptreferens till
Skapa en autentiseringspipeline. Pipelinen måste skapas innan du kan initiera en klientslutpunkt för tjänst-URL:en. Använd din egen Azure Kartor-kontonyckel eller Azure Active Directory-autentiseringsuppgifter (Azure AD) för att autentisera en Azure Kartor tjänsten Search-klient. I det här exemplet skapas tjänsten Search URL-klient.
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 Azure AD 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.
I följande kod används den nyligen skapade Azure Kartor tjänsten Search URL-klienten för att geokoda en adress: "1 Microsoft Way, Redmond, WA". Koden använder funktionen
searchAddressoch visar resultatet som en tabell i sidans brödtext.// 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 kodexempel som körs:
Azure Government molnsupport
Azure Kartor Web SDK stöder Azure Government molnet. Alla JavaScript- och CSS-URL:er som används för åtkomst till 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.
När du använder tjänstmodulen måste domänen för tjänsterna anges när du skapar en instans av en API-URL-slutpunkt. Följande kod skapar till exempel en instans av klassen SearchURL och pekar domänen mot Azure Government molnet.
var searchURL = new atlas.service.SearchURL(pipeline, 'atlas.azure.us');
Om du har direkt åtkomst till Azure Kartor REST-tjänster ä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 https://atlas.microsoft.com/search/ från 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: