Skip to content
Permalink
master
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
<!DOCTYPE html>
<html lang="en">
<head>
<title>Multiple routes by mode of travel - Azure Maps Web SDK Samples</title>
<meta charset="utf-8" />
<link rel="shortcut icon" href="/favicon.ico"/>
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="This tutorial shows how to perform multiple routes for different modes of travel and display them on the map." />
<meta name="keywords" content="Microsoft maps, map, gis, API, SDK, services, module, tutorials, routing, directions, route, truck, commercial vehicle" />
<meta name="author" content="Microsoft Azure Maps" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/2/atlas.min.css" type="text/css" />
<script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/2/atlas.min.js"></script>
<!-- Add a reference to the Azure Maps Services Module JavaScript file. -->
<script src="https://atlas.microsoft.com/sdk/javascript/service/2/atlas-service.min.js"></script>
<script>
var map, datasource, client;
function GetMap() {
// Create a new map
var map = new atlas.Map('myMap', {
view: 'Auto',
//Add authentication details for connecting to Azure Maps.
authOptions: {
//Use Azure Active Directory authentication.
authType: 'anonymous',
clientId: 'c9f2f391-13f1-407b-a4a5-f0a241bacfbf', //Your Azure Active Directory client id for accessing your Azure Maps account.
getToken: function (resolve, reject, map) {
//URL to your authentication service that retrieves an Azure Active Directory Token.
var tokenServiceUrl = 'https://azuremapscodesamples.azurewebsites.us/Common/TokenService.ashx';
fetch(tokenServiceUrl).then(r => r.text()).then(token => resolve(token));
}
//Alternatively, use an Azure Maps key. Get an Azure Maps key at https://azure.com/maps. NOTE: The primary key should be used as the key.
//authType: 'subscriptionKey',
//subscriptionKey: '<Your Azure Maps Key>'
}
});
//Wait until the map resources are ready.
map.events.add('ready', function () {
// Add Traffic Flow to the Map
map.setTraffic({
flow: "relative"
});
//Create a data source and add it to the map.
datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Add a layer for rendering the route lines and have it render under the map labels.
map.layers.add(new atlas.layer.LineLayer(datasource, null, {
strokeColor: ['get', 'strokeColor'],
strokeWidth: ['get', 'strokeWidth'],
lineJoin: 'round',
lineCap: 'round'
}), 'labels');
//Add a layer for rendering point data.
map.layers.add(new atlas.layer.SymbolLayer(datasource, null, {
iconOptions: {
image: ['get', 'icon'],
allowOverlap: true
},
textOptions: {
textField: ['get', 'title'],
offset: [0, 1.2]
},
filter: ['any', ['==', ['geometry-type'], 'Point'], ['==', ['geometry-type'], 'MultiPoint']] //Only render Point or MultiPoints in this layer.
}));
//Create the GeoJSON objects which represent the start and end point of the route.
var startPoint = new atlas.data.Feature(new atlas.data.Point([-122.356099, 47.580045]), {
title: 'Fabrikam, Inc.',
icon: 'pin-blue'
});
var endPoint = new atlas.data.Feature(new atlas.data.Point([-122.201164, 47.616940]), {
title: 'Microsoft - Lincoln Square',
icon: 'pin-round-blue'
});
//Add the data to the data source.
datasource.add([startPoint, endPoint]);
//Fit the map window to the bounding box defined by the start and end positions.
map.setCamera({
bounds: atlas.data.BoundingBox.fromData([startPoint, endPoint]),
padding: 100
});
//Use MapControlCredential to share authentication between a map control and the service module.
var pipeline = atlas.service.MapsURL.newPipeline(new atlas.service.MapControlCredential(map));
//Construct the RouteURL object
var routeURL = new atlas.service.RouteURL(pipeline, 'atlas.azure.us');
//Start and end point input to the routeURL
var coordinates = [[startPoint.geometry.coordinates[0], startPoint.geometry.coordinates[1]], [endPoint.geometry.coordinates[0], endPoint.geometry.coordinates[1]]];
//Make a search route request for a truck vehicle type
routeURL.calculateRouteDirections(atlas.service.Aborter.timeout(10000), coordinates, {
travelMode: 'truck',
vehicleWidth: 2,
vehicleHeight: 2,
vehicleLength: 5,
vehicleLoadType: 'USHazmatClass2'
}).then((directions) => {
//Get data features from response
var data = directions.geojson.getFeatures();
//Get the route line and add some style properties to it.
var routeLine = data.features[0];
routeLine.properties.strokeColor = '#2272B9';
routeLine.properties.strokeWidth = 9;
//Add the route line to the data source. We want this to render below the car route which will likely be added to the data source faster, so insert it at index 0.
datasource.add(routeLine, 0);
});
routeURL.calculateRouteDirections(atlas.service.Aborter.timeout(10000), coordinates).then((directions) => {
//Get data features from response
var data = directions.geojson.getFeatures();
//Get the route line and add some style properties to it.
var routeLine = data.features[0];
routeLine.properties.strokeColor = '#B76DAB';
routeLine.properties.strokeWidth = 5;
//Add the route line to the data source. We want this to render below the car route which will likely be added to the data source faster, so insert it at index 0.
datasource.add(routeLine);
});
});
}
</script>
<style>
html,
body {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
#myMap {
width: 100%;
height: 100%;
}
</style>
</head>
<body onload="GetMap()">
<div id="myMap"></div>
</body>
</html>