Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
158 lines (127 sloc) 6.69 KB
<!DOCTYPE html>
<html>
<head>
<title>Multiple routes by mode of travel - Azure Maps Web SDK Samples</title>
<meta charset="utf-8" />
<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="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 your Azure Maps subscription key to the map SDK. Get an Azure Maps key at https://azure.com/maps
authOptions: {
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 SubscriptionKeyCredential with a subscription key
var subscriptionKeyCredential = new atlas.service.SubscriptionKeyCredential(atlas.getSubscriptionKey());
// Use subscriptionKeyCredential to create a pipeline
var pipeline = atlas.service.MapsURL.newPipeline(subscriptionKeyCredential);
// Construct the RouteURL object
var routeURL = new atlas.service.RouteURL(pipeline);
//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>
You can’t perform that action at this time.