Learn how to calculate the area that can be reached in a given drive time from a location.
A service area, also known as an isochrone, is a polygon that represents the area that can be reached when driving or walking on a street network. The area that can be reached is restricted by either time or distance. To calculate service areas, you can use the Service area service. You provide a start location (facilities), one or more time or distance values, and a spatial reference. Once processed, the service returns the service areas that can be reached.
In this tutorial, you will create and display five, ten, and fifteen minute drive time service areas when the map is clicked.
To learn how to find a route and directions to different locations, visit the Get a route and directions tutorial.
NoteTo learn more about routing, visit Route and directions in the Mapping and location services guide.
Prerequisites ArcGIS Accounts:You need an ArcGIS Location Platform or ArcGIS Online account.
Steps Create a new penYou need an access token with the correct privileges to access the location services used in this tutorial.
esriConfig.apiKey
to your access token.
Use dark colors for code blocks
1
2
3
4
5
6
7
8
9
var esriConfig = {
apiKey: "YOUR_ACCESS_TOKEN",
};
To learn about other ways to get an access token, go to Types of authentication.
Update the mapA streets basemap layer is typically used in routing applications. Update the basemap
attribute to use the arcgis/navigation
basemap layer and change the position of the map to center on Osaka.
basemap
attribute from arcgis/topographic
to arcgis/navigation
. Then change the zoom
and center
attributes to center on Osaka.
Expand
Use dark colors for code blocks1
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
<arcgis-map basemap="arcgis/navigation" center="135.5023,34.6937" zoom="11">
<arcgis-zoom position="top-left"></arcgis-zoom>
</arcgis-map>
Add a <script>
tag in the <body>
following the <arcgis-map>
component. Use $arcgis.import()
to add the serviceArea
, ServiceAreaParameters
, FeatureSet
, and Graphic
modules.
The ArcGIS Maps SDK for JavaScript is available via CDN and npm, but this tutorial is based on CDN. The $arcgis.import
global function accepts a module path or array of module paths, and returns a promise that resolves with the requested modules. This function can only be used when working with the CDN; otherwise, use the standard import syntax. To learn more about the SDK's different modules, visit the References page.
Use the document.querySelector() method to access the map component.
Expand
Use dark colors for code blocks1
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
<script type="module">
const [serviceArea, ServiceAreaParams, FeatureSet, Graphic] = await $arcgis.import([
"@arcgis/core/rest/serviceArea.js",
"@arcgis/core/rest/support/ServiceAreaParameters.js",
"@arcgis/core/rest/support/FeatureSet.js",
"@arcgis/core/Graphic.js",
]);
const viewElement = document.querySelector("arcgis-map");
</script>
Wait for the viewOnReady
method to resolve to ensure the Map component is loaded and ready to use.
Expand
Use dark colors for code blocks1
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
<script type="module">
const [serviceArea, ServiceAreaParams, FeatureSet, Graphic] = await $arcgis.import([
"@arcgis/core/rest/serviceArea.js",
"@arcgis/core/rest/support/ServiceAreaParameters.js",
"@arcgis/core/rest/support/FeatureSet.js",
"@arcgis/core/Graphic.js",
]);
const viewElement = document.querySelector("arcgis-map");
await viewElement.viewOnReady();
</script>
The serviceArea
module makes a request to a service and returns the results. Use the serviceArea
class to access the Service area service.
serviceAreaUrl
, to reference the service url.
Expand
Use dark colors for code blocks1
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
const serviceAreaUrl =
"https://route-api.arcgis.com/arcgis/rest/services/World/ServiceAreas/NAServer/ServiceArea_World/solveServiceArea";
Use a point graphic to display the location (facility) for the service area starting point.
Add an arcgisViewClick
event handler to add a point graphic to the map.
Expand
Use dark colors for code blocks1
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
const serviceAreaUrl =
"https://route-api.arcgis.com/arcgis/rest/services/World/ServiceAreas/NAServer/ServiceArea_World/solveServiceArea";
viewElement.addEventListener("arcgisViewClick", (event) => {
});
Create a createGraphic
function that takes a point as a parameter and returns a white Graphic
. It should remove all graphics each time.
Expand
Use dark colors for code blocks1
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
// Create the location graphic
function createGraphic(point) {
viewElement.graphics.removeAll();
const graphic = new Graphic({
geometry: point,
symbol: {
type: "simple-marker",
color: "white",
size: 8,
},
});
viewElement.graphics.add(graphic);
return graphic;
}
Update the arcgisViewClick
handler to call the createGraphic
function and store the graphic in locationGraphic
.
Expand
Use dark colors for code blocks1
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
viewElement.addEventListener("arcgisViewClick", (event) => {
const locationGraphic = createGraphic(event.detail.mapPoint);
});
Click on the map to see a point graphic.
A serviceArea
uses drive times (cutoffs) and spatial reference parameters to calculate the service area. It also uses a FeatureSet
to set the facilities
(location) from where the service area polygon will be drawn. Use an arcgisViewClick
event handler to set the parameters required to create the service area.
Create a createServiceAreaParams
function that takes point graphic, drive time, and spatial reference parameters.
Expand
Use dark colors for code blocks1
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
viewElement.graphics.add(graphic);
return graphic;
}
function createServiceAreaParams(locationGraphic, driveTimeCutoffs, outSpatialReference) {
}
Create a FeatureSet
to set the features
property with the point graphic.
Expand
Use dark colors for code blocks1
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
function createServiceAreaParams(locationGraphic, driveTimeCutoffs, outSpatialReference) {
// Create one or more locations (facilities) to solve for
const featureSet = new FeatureSet({
features: [locationGraphic],
});
}
Create a ServiceAreaParams
and return the taskParameters
element.
Expand
Use dark colors for code blocks1
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
function createServiceAreaParams(locationGraphic, driveTimeCutoffs, outSpatialReference) {
// Create one or more locations (facilities) to solve for
const featureSet = new FeatureSet({
features: [locationGraphic],
});
// Set all of the input parameters for the service
const taskParameters = new ServiceAreaParams({
facilities: featureSet,
defaultBreaks: driveTimeCutoffs,
trimOuterPolygon: true,
outSpatialReference: outSpatialReference,
});
return taskParameters;
}
Update the arcgisViewClick
handler to add drive time cutoffs of 5, 10, and 15 minutes and to call the createServiceAreaParams
function.
Expand
Use dark colors for code blocks1
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
viewElement.addEventListener("arcgisViewClick", (event) => {
const locationGraphic = createGraphic(event.detail.mapPoint);
const driveTimeCutoffs = [5, 10, 15]; // Minutes
const serviceAreaParams = createServiceAreaParams(
locationGraphic,
driveTimeCutoffs,
viewElement.spatialReference,
);
});
To solve the service area, pass the serviceAreaParams
to the solve
method. Use a solveServiceArea
function to find the service area polygon and add the resulting graphic to the map.
Create a solveServiceArea
function.
Expand
Use dark colors for code blocks1
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
// Set all of the input parameters for the service
const taskParameters = new ServiceAreaParams({
facilities: featureSet,
defaultBreaks: driveTimeCutoffs,
trimOuterPolygon: true,
outSpatialReference: outSpatialReference,
});
return taskParameters;
}
function solveServiceArea(url, serviceAreaParams) {
}
Call the solve
method to find the service area and add the results to the map.
Expand
Use dark colors for code blocks1
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
function solveServiceArea(url, serviceAreaParams) {
return serviceArea.solve(url, serviceAreaParams).then(
(result) => {
if (result.serviceAreaPolygons.features.length) {
// Draw each service area polygon
result.serviceAreaPolygons.features.forEach((graphic) => {
graphic.symbol = {
type: "simple-fill",
color: "rgba(255,50,50,.25)",
};
viewElement.graphics.add(graphic, 0);
});
}
},
(error) => {
console.log(error);
},
);
}
Update the arcgisViewClick
handler to call the solveServiceArea
function.
Expand
Use dark colors for code blocks1
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
viewElement.addEventListener("arcgisViewClick", (event) => {
const locationGraphic = createGraphic(event.detail.mapPoint);
const driveTimeCutoffs = [5, 10, 15]; // Minutes
const serviceAreaParams = createServiceAreaParams(
locationGraphic,
driveTimeCutoffs,
viewElement.spatialReference,
);
solveServiceArea(serviceAreaUrl, serviceAreaParams);
});
In CodePen, run your code to display the map.
Click on the map to create service areas. When you click on the map, you will see a point graphic along with drive time service areas. The service areas represent the area that can be reached within 5, 10, and 15 minutes.
What's next?Learn how to use additional API features and ArcGIS services in these tutorials:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4