-
Notifications
You must be signed in to change notification settings - Fork 472
Expand file tree
/
Copy pathSimple REST Directions.html
More file actions
137 lines (117 loc) · 6.08 KB
/
Simple REST Directions.html
File metadata and controls
137 lines (117 loc) · 6.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<!DOCTYPE html>
<html lang="en">
<head>
<title>Simple REST Directions (Route) - Azure Maps Web SDK Samples</title>
<meta charset="utf-8" />
<link rel="shortcut icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="This sample shows how to calculate simple directions between two points using the Azure Maps REST Route API and render it on a map." />
<meta name="keywords" content="Microsoft maps, map, gis, API, SDK, REST, service, directions, route, routing" />
<meta name="author" content="Microsoft Azure Maps" />
<meta name="version" content="2.0" />
<meta name="screenshot" content="screenshot.jpg" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" rel="stylesheet" />
<script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js"></script>
<!-- Add a reference to the Azure Maps Rest Helper JavaScript file. -->
<script src="https://samples.azuremaps.com/lib/azure-maps/azure-maps-helper.min.js"></script>
<script>
var map, datasource;
// URL for the Azure Maps Route API.
var routeUrl = 'https://{azMapsDomain}/route/directions?api-version=2025-01-01';
function getMap() {
// Initialize a map instance.
map = new atlas.Map('myMap', {
center: [-122.33, 47.6],
zoom: 12,
view: 'Auto',
language: 'Auto',
// Add authentication details for connecting to Azure Maps.
authOptions: {
// Use SAS token for authentication
authType: 'sas',
getToken: function (resolve, reject, map) {
// URL to your authentication service that retrieves a SAS Token
var tokenServiceUrl = 'https://samples.azuremaps.com/api/GetAzureMapsSasToken';
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 () {
// 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 line and have it render under the map labels.
map.layers.add(new atlas.layer.LineLayer(datasource, null, {
strokeColor: '#2272B9',
strokeWidth: 5,
lineJoin: 'round',
lineCap: 'round'
}), 'labels');
// Add a layer for rendering point data.
map.layers.add(new atlas.layer.SymbolLayer(datasource, null, {
iconOptions: {
image: ['get', 'iconImage'],
allowOverlap: true,
ignorePlacement: true
},
textOptions: {
textField: ['get', 'title'],
offset: [0, 1]
},
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 startPosition = [-122.33028, 47.60323];
var startPoint = new atlas.data.Feature(new atlas.data.Point(startPosition), {
title: 'Seattle',
iconImage: 'pin-blue',
pointIndex: 0,
pointType: "waypoint"
});
var endPosition = [-122.124, 47.67491];
var endPoint = new atlas.data.Feature(new atlas.data.Point(endPosition), {
title: 'Redmond',
iconImage: 'pin-red',
pointIndex: 1,
pointType: "waypoint"
});
// 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.fromPositions([startPosition, endPosition]),
padding: 50
});
// Create the route request.
var routeRequestBody = {
type: 'FeatureCollection',
features: [startPoint, endPoint],
optimizeRoute: 'fastestWithTraffic',
routeOutputOptions: ['routePath'],
maxRouteCount: 1,
travelMode: 'driving'
};
// Process the request and render the route result on the map.
processPostRequest(routeUrl, JSON.stringify(routeRequestBody)).then(directions => {
// Add directions to the data source.
datasource.add(directions);
});
});
}
</script>
</head>
<body onload="getMap()">
<div id="myMap" style="position:relative;width:100%;min-width:290px;height:600px;"></div>
<fieldset style="width:calc(100% - 30px);min-width:290px;margin-top:10px;">
<legend>Simple REST Directions (Route)</legend>
This sample shows how to calculate simple directions between two points using the Azure Maps REST Route API and render it on a map.
</fieldset>
</body>
</html>