Service areas

Driving or walking time areas created for a location using the routing service

What is a service area?

A service area, also known as an isochrone, is a polygon that represents the distance that can be reached when driving or walking on a street network. This type of analysis is common in real estate search or determining the driving proximity to schools, businesses, or other facilities. For example, you can create a drive time polygon that represents how far you can drive in any direction from the center of a city in 20 minutes.

You can use service areas to build applications that:

  • Visualize and measure the accessibility of locations that provide some kind of service. For example, a three-minute drive-time polygon around a grocery store can determine which residents are able to reach the store within three minutes and are thus more likely to shop there.

  • By generating multiple service areas around one or more locations that can show how accessibility changes with an increase in travel time or travel distance. It can be used, for example, to determine how many hospitals are within 5, 10, and 15 minute drive times of schools.

  • When creating service areas based on travel times, the service can make use of traffic data, which can influence the area that can be reached during different times of the day.

How service areas work

The typical workflow for creating service areas is to define:

  1. One or more locations around which service areas are generated (facilities).
  2. The size and number of service areas to generate for each facility.
  3. Define the type of travel for the analysis.
  4. Call the service to generate service areas around facilities.

URL requests

You can generate service areas by making an HTTPS request to the Service Area service solveServiceArea operation or by using client APIs. Specify the one or more input facilities, and optionally, additional parameters to refine the operation. Some of the most common parameters are described provided below.

Direct and job

The service supports both direct and job requests. Both Direct and Job request types support all of the capabilities of the service, however, Direct is better suited for shorter requests, and Job is better suited for longer, more complex requests.

The request you choose depends on the complexity of the problem you are trying solve and limits of the request.

Request limits

LimitDirectJob
Maximum number of facilities:1001,000
Maximum transaction time:5 minutes2 hours
Maximum number of breaks:No limitNo limit
Maximum travel time:9 hours when walking
5 hours for all other travel modes
9 hours when walking
5 hours for all other travel modes
Maximum travel distance:27 miles (43.45 kilometers) when walking
300 miles (482.80 kilometers) for all other travel modes
27 miles (43.45 kilometers) when walking
300 miles (482.80 kilometers) for all other travel modes
Maximum travel time when generating detailed polygons:5 hours when walking
15 minutes for all other travel modes
5 hours when walking
15 minutes for all other travel modes
Maximum travel distance when generating detailed polygons:15 miles (24.14 kilometers) for all travel modes15 miles (24.14 kilometers) for all travel modes
Maximum travel time when generating service area lines:5 hours when walking
15 minutes for all other travel modes
5 hours when walking
15 minutes for all other travel modes
Maximum travel distance when generating service area lines:15 miles (24.14 kilometers) for all travel modes15 miles (24.14 kilometers) for all travel modes
Maximum number of point barriers:250250
Maximum number of street features intersected by polyline barriers:500500
Maximum number of street features intersected by polygon barriers:2,0002,000
Force hierarchy beyond a travel time of:

(If you specify a drive time that exceeds the limit shown here, the analysis uses the hierarchy even if the travel mode defines not to use hierarchy)
60 minutes

The 60-minute limit applies when generating polygons with standard level of detail. (outputPolygons = esriNAOutputPolygonSimplified).

When walking, the analysis does not force hierarchy even when this limit is exceeded and always returns polygons with standard level of detail.
4 hours

The 4-hour limit applies when generating polygons with standard level of detail. (polygon_detail = Standard).

When walking, the analysis does not force hierarchy even when this limit is exceeded and always returns polygons with standard level of detail.
Force hierarchy beyond a travel distance of:

(If you specify a drive distance that exceeds the limit shown here, the analysis uses the hierarchy even if the travel mode defines not to use hierarchy)
60 miles (96.56 kilometers)

The 60-mile limit applies when generating polygons with standard level of detail. (outputPolygons = esriNAOutputPolygonSimplified).

When walking, the analysis does not force hierarchy even when this limit is exceeded and always returns polygons with standard level of detail.
240 miles (386.24 kilometers)

The 240-mile limit applies when generating polygons with standard level of detail. (polygon_detail = Standard).

When walking, the analysis does not force hierarchy even when this limit is exceeded and always returns polygons with standard level of detail.
Maximum polygon trim distance:500 meters500 meters
Maximum snap tolerance:

(If the distance between an input point and its nearest traversable street is greater than the distance specified here, the point is excluded from the analysis.)
12.42 miles (20 kilometers)12.42 miles (20 kilometers)
Maximum number of polygon features that can be returned by the service:No limit10,000
Direct requestJob request

URL

 
1
https://route-api.arcgis.com/arcgis/rest/services/World/ServiceAreas/NAServer/ServiceArea_World/solveServiceArea?<parameters>

Use for shorter transactions with less than 100 facilities that will complete in less than 5 minutes.

Key parameters

Name (Direct)DescriptionExamples
facilitiesOne or more locations around which service areas are generated.facilities=-117,34
defaultBreaksThe size and number of service areas to generate for each facility.defaultBreaks=5,10,15
travelModeThe mode of transportation such as driving a car or a truck or walking.travelMode=JSON Object
travelDirectionThe direction of travel (away from facility or towards facility) that should be used when generating service areas.travelDirection=esriNATravelDirectionFromFacility
timeOfDayThe time to depart from or arrive at facilities. You can also specify a value of now, to set the depart or arrive time to current time.timeOfDay=now

Additional parameters: Exercise fine-grained control on how the service area polygons are generated by specifying outputPolygons, splitPolygonAtBreaks, overlapPolygons, and mergeSimilarPolygonRanges parameters.

URL

 
1
https://logistics.arcgis.com/arcgis/rest/services/World/ServiceAreas/GPServer/GenerateServiceAreas/submitJob?<parameters>

Use for longer transactions with up to 1,000 facilities that will complete in less than 2 hours.

Key parameters

Name (Job)DescriptionExamples
facilitiesOne or more locations around which service areas are generated.facilities={"features":[{"geometry":{"x":-117,"y":34.5}}]}
break_valuesThe size and number of service areas to generate for each facility.break_values=5 10 15
travel_modeThe mode of transportation such as driving a car or a truck or walking.travel_mode=JSON Object
travel_directionThe direction of travel (away from facility or towards facility) that should be used when generating service areas.travel_direction=Away From Facility
time_of_dayThe time to depart from or arrive at facilities.time_of_day=1608022800000

Additional parameters: Exercise fine-grained control on how the service area polygons are generated by specifying polygon_detail, polygon_overlap_type, and polygons_for_multiple_facilities parameters.

Examples

Direct: Find walk distance areas

In this example, use the Service area service to find an area that is within 2.5 kilometers (1.55 miles) of walking distance from an elementary school. Such an area can be used to determine which students are eligible for the school bus service as the students that live within 1.5 miles of walking distance from the school are not eligible.

To find service areas, you need to define one or more facilities around which service areas are generated. The default travelMode is driving time, so in this case the travel mode is set to walking distance. The defaultBreaks are set to 2.5 which is interpreted by the service to be in kilometers since the distance unit of the travel mode's impedance attribute is kilometers. The travel direction is set to esriNATravelDirectionToFacility to calculate the walk area as students walk towards the school.

The response contains a polygon of the walk area with 1.55 miles that does not qualify for bus transportation.

APIs

ArcGIS JS APIEsri LeafletMapbox GL JSOpenLayersArcGIS REST JSArcGIS .NET APIArcGIS Android APIArcGIS iOS APIArcGIS Java APIArcGIS Qt API (C++)ArcGIS Qt API (QML)ArcGIS Python API
                                                                                                                            
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
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
  <title>ArcGIS Developer Guide: Service areas</title>
  <style>
    html, body, #viewDiv {
      padding: 0;
      margin: 0;
      height: 100%;
      width: 100%;
  </style>

  <link rel="stylesheet" href="https://js.arcgis.com/4.19/esri/themes/light/main.css">
  <script src="https://js.arcgis.com/4.19/"></script>

  <script>
    require([
      "esri/config",
      "esri/Map",
      "esri/views/MapView",
      "esri/tasks/ServiceAreaTask",
      "esri/tasks/support/ServiceAreaParameters",
      "esri/tasks/support/FeatureSet",
      "esri/Graphic",
      "esri/widgets/ScaleBar"
    ],(esriConfig, Map, MapView, ServiceAreaTask, ServiceAreaParams, FeatureSet, Graphic, ScaleBar)=> {
      esriConfig.apiKey = "YOUR-API-KEY";
      const map = new Map({
        basemap: "arcgis-navigation"
      const view = new MapView({
        container: "viewDiv",
        map: map,
        center: [-117.133163,34.022445],
        zoom: 13,
        constraints: {
          snapToZoom: false
      view.ui.add(new ScaleBar({view:view,style:"line"}),"bottom-right");
      view.when(()=>{
      view.on("click",(event)=>{
      // Create the location graphic
      function createGraphic(point) {
        // Remove any existing graphics
        // Create a and add the point
        const graphic = new Graphic({
          geometry: point,
          symbol: {
            type: "simple-marker",
            color: "white",
            size: 8
        return graphic;
      function findServiceArea (locationFeature) {

        const serviceAreaTask = new ServiceAreaTask({
          url: "https://route-api.arcgis.com/arcgis/rest/services/World/ServiceAreas/NAServer/ServiceArea_World/solveServiceArea"
        });

        const driveTimeCutoffs = 2.5; // km
        const travelDirection = "to-facility";
        const travelMode = "{'attributeParameterValues':[{'attributeName':'Avoid Private Roads','parameterName':'Restriction Usage','value':'AVOID_MEDIUM'},{'attributeName':'Walking','parameterName':'Restriction Usage','value':'PROHIBITED'},{'attributeName':'Preferred for Pedestrians','parameterName':'Restriction Usage','value':'PREFER_LOW'},{'attributeName':'WalkTime','parameterName':'Walking Speed (km/h)','value':5},{'attributeName':'Avoid Roads Unsuitable for Pedestrians','parameterName':'Restriction Usage','value':'AVOID_HIGH'}],'description':'Follows paths and roads that allow pedestrian traffic and finds solutions that optimize travel distance.','distanceAttributeName':'Kilometers','id':'yFuMFwIYblqKEefX','impedanceAttributeName':'Kilometers','name':'Walking Distance','restrictionAttributeNames':['Avoid Private Roads','Avoid Roads Unsuitable for Pedestrians','Preferred for Pedestrians','Walking'],'simplificationTolerance':2,'simplificationToleranceUnits':'esriMeters','timeAttributeName':'WalkTime','type':'WALK','useHierarchy':false,'uturnAtJunctions':'esriNFSBAllowBacktrack'}";

        const serviceAreaParams = new ServiceAreaParams({
          facilities: new FeatureSet({
            features: [locationFeature]
          }),
          defaultBreaks: driveTimeCutoffs,
          travelMode: travelMode,
          travelDirection: travelDirection,
          outSpatialReference: view.spatialReference,
          trimOuterPolygon: true
        });

        serviceAreaTask.solve(serviceAreaParams)
          .then(function(result){
            showServiceAreas(result.serviceAreaPolygons);
          }, function(error){
            console.log(error);
          });
      }
      function createServiceAreas(point) {
        const locationGraphic = createGraphic(point);
      function showServiceAreas(serviceAreaPolygons) {
        serviceAreaPolygons.forEach((graphic)=>{
            type: "simple-fill",
            color: "rgba(255, 0, 0, .25)"
          view.graphics.add(graphic,0);
  </script>
</head>
<body>
  <div id="viewDiv"></div>
</body>
</html>

REST API

RequestResponse
cURLHTTP
       
1
2
3
4
5
6
7
curl https://route-api.arcgis.com/arcgis/rest/services/World/ServiceAreas/NAServer/ServiceArea_World/solveServiceArea? \
-d "f=json" \
-d "token=<ACCESS-TOKEN>" \
-d "facilities=-117.133163,34.022445" \
-d "defaultBreaks=2.5" \
-d "travelDirection=esriNATravelDirectionToFacility" \
-d "travelMode={'attributeParameterValues':[{'attributeName':'Avoid Private Roads','parameterName':'Restriction Usage','value':'AVOID_MEDIUM'},{'attributeName':'Walking','parameterName':'Restriction Usage','value':'PROHIBITED'},{'attributeName':'Preferred for Pedestrians','parameterName':'Restriction Usage','value':'PREFER_LOW'},{'attributeName':'WalkTime','parameterName':'Walking Speed (km/h)','value':5},{'attributeName':'Avoid Roads Unsuitable for Pedestrians','parameterName':'Restriction Usage','value':'AVOID_HIGH'}],'description':'Follows paths and roads that allow pedestrian traffic and finds solutions that optimize travel distance.','distanceAttributeName':'Kilometers','id':'yFuMFwIYblqKEefX','impedanceAttributeName':'Kilometers','name':'Walking Distance','restrictionAttributeNames':['Avoid Private Roads','Avoid Roads Unsuitable for Pedestrians','Preferred for Pedestrians','Walking'],'simplificationTolerance':2,'simplificationToleranceUnits':'esriMeters','timeAttributeName':'WalkTime','type':'WALK','useHierarchy':false,'uturnAtJunctions':'esriNFSBAllowBacktrack'}"
                                       
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
{
  "messages": [],
  "saPolygons": {
    "fieldAliases": {
      "Name": "Name"
      // more field aliases
    },
    "geometryType": "esriGeometryPolygon",
    "spatialReference": {
      "wkid": 4326,
      "latestWkid": 4326
    },
    "features": [
      {
        "attributes": {
          "Name": "Location 1 : 0 - 2.5",
          "FromBreak": 0,
          "ToBreak": 2.5
          // more field values
        },
        "geometry": {
          "rings": [
            [
              [
                -117.13887868499995,
                34.04079974800004
              ],
              [
                -117.13820495099998,
                34.040350593000028
              ]
              // additional points that make up the ring for the polygon
            ]
          ]
        }
      }
    ]
  }
}

Job: Find drive-time areas

In this example, you will find the 5, 10, and 15 minute drive-time polygons around all locations of a grocery store chain in a city. The chain wants to use these drive-time areas to see how many customers can easily drive to their stores and thus are more likely to shop there.

The example illustrates how to measure the time it takes potential customers to reach each store. To do so, the travel_direction is set to Towards Facility. Attributes for each store are also provided such as the StoreId, StoreName, and Address. These will be appended to the drive-time areas to correlate the output drive-time area with the store.

APIs

ArcGIS Python API
                                                                                                          
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
"""
Find the 5, 10, and 15 minute drive-time polygons around all locations of a grocery store chain in a city.
"""

import arcgis
import pandas as pd


def print_result(result):
    """Print useful information from the result."""
    pd.set_option("display.max_rows", None)
    pd.set_option("display.max_colwidth", None)

    output_polygons = result.service_areas.sdf
    print("\n-- Output Polygons -- \n")
    print(output_polygons[["StoreId", "StoreName", "Address",
                           "FromBreak", "ToBreak"]].to_string(index=False))


def main():
    """Program execution logic."""
    # inputs
    facilities = {
        "displayFieldName": "",
        "fieldAliases": {
            "StoreName": "Store Name",
            "Address": "Address",
            "StoreId": "Store ID"
        },
        "geometryType": "esriGeometryPoint",
        "spatialReference": {
            "wkid": 4326,
            "latestWkid": 4326
        },
        "fields": [
            {
                "name": "StoreName",
                "type": "esriFieldTypeString",
                "alias": "Name",
                "length": 50
            },
            {
                "name": "Address",
                "type": "esriFieldTypeString",
                "alias": "Name",
                "length": 256
            },
            {
                "name": "StoreId",
                "type": "esriFieldTypeString",
                "alias": "Store ID",
                "length": 16
            }
        ],
        "features": [
            {
                "attributes": {
                    "StoreName": "Store 1",
                    "Address": "1775 E Lugonia Ave, Redlands, CA 92374",
                    "StoreId": "120"
                },
                "geometry": {
                    "x": -117.14002999994386,
                    "y": 34.071219999994128
                }
            },
            {
                "attributes": {
                    "StoreName": "Store 2",
                    "Address": "1536 Barton Rd, Redlands, CA 92373",
                    "StoreId": "130"
                },
                "geometry": {
                    "x": -117.207329999671,
                    "y": 34.047980000203609
                }
            },
            {
                "attributes": {
                    "StoreName": "Store 3",
                    "Address": "11 E Colton Ave, Redlands, CA 92374",
                    "StoreId": "121"
                },
                "geometry": {
                    "x": -117.18194000041973,
                    "y": 34.06351999976232
                }
            }
        ]
    }


    # Connect to the Service area service
    api_key = "YOUR-API-KEY"
    arcgis.GIS("https://www.arcgis.com", api_key=api_key)

    # Call the Service Area service
    result = arcgis.network.analysis.generate_service_areas(facilities=facilities,
                                                            break_values="5 10 15",
                                                            travel_direction="Towards Facility")
    print_result(result)



if __name__ == "__main__":
    main()

REST API

Unlike Direct request type which allows you to make a request and get back all the results in the response, when working with a Job request type, you need to follow a three step workflow:

  1. Make the submitJob request with the appropriate request parameters to get a job id.
  2. Using the job id, check the job status to see if the job completed successfully.
  3. Use the job id to get one or more results.
1. Submit job2. Check job status3. Get results (service_areas)
cURLHTTP
      
1
2
3
4
5
6
curl https://logistics.arcgis.com/arcgis/rest/services/World/ServiceAreas/GPServer/GenerateServiceAreas/submitJob? \
-d "f=json" \
-d "token=<ACCESS-TOKEN>" \
-d "facilities={'displayFieldName':'','fieldAliases':{'StoreName':'Store Name','Address':'Address','StoreId':'Store ID'},'geometryType':'esriGeometryPoint','spatialReference':{'wkid':4326,'latestWkid':4326},'fields':[{'name':'StoreName','type':'esriFieldTypeString','alias':'Name','length':50},{'name':'Address','type':'esriFieldTypeString','alias':'Name','length':256},{'name':'StoreId','type':'esriFieldTypeString','alias':'Store ID','length':16}],'features':[{'attributes':{'StoreName':'Store 1','Address':'1775 E Lugonia Ave, Redlands, CA 92374','StoreId':'120'},'geometry':{'x':-117.14002999994386,'y':34.071219999994128}},{'attributes':{'StoreName':'Store 2','Address':'1536 Barton Rd, Redlands, CA 92373','StoreId':'130'},'geometry':{'x':-117.207329999671,'y':34.047980000203609}},{'attributes':{'StoreName':'Store 3','Address':'11 E Colton Ave, Redlands, CA 92374','StoreId':'121'},'geometry':{'x':-117.18194000041973,'y':34.06351999976232}}]}" \
-d "break_values=5 10 15" \
-d "travel_direction='Towards Facility'"
Response (JSON)
    
1
2
3
4
{
  "jobId": "jdb99eec215ab41a9961a2563d7933956",
  "jobStatus": "esriJobSubmitted"
}
Request
cURLHTTP
   
1
2
3
curl https://logistics.arcgis.com/arcgis/rest/services/World/ServiceAreas/GPServer/GenerateServiceAreas/jobs/jdb99eec215ab41a9961a2563d7933956? \
-d "f=json" \
-d "token=<ACCESS-TOKEN>"
Response (JSON)
                                 
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
{
  "jobId": "jdb99eec215ab41a9961a2563d7933956",
  "jobStatus": "esriJobSucceeded",
  "results": {
    "Service_Areas": {
      "paramUrl": "results/Service_Areas"
    },
    "Solve_Succeeded": {
      "paramUrl": "results/Solve_Succeeded"
    },
    "Output_Network_Analysis_Layer": {
      "paramUrl": "results/Output_Network_Analysis_Layer"
    },
    "Output_Facilities": {
      "paramUrl": "results/Output_Facilities"
    },
    "Output_Service_Area_Lines": {
      "paramUrl": "results/Output_Service_Area_Lines"
    },
    "Output_Result_File": {
      "paramUrl": "results/Output_Result_File"
    }
  },
  "inputs": {
    "Facilities": {
      "paramUrl": "inputs/Facilities"
    },
    "Break_Values": {
      "paramUrl": "inputs/Break_Values"
    }
  },
  "messages": []
}
Request
cURLHTTP
   
1
2
3
curl https://logistics.arcgis.com/arcgis/rest/services/World/ServiceAreas/GPServer/GenerateServiceAreas/jobs/jdb99eec215ab41a9961a2563d7933956/results/Service_Areas? \
-d "f=json" \
-d "token=<ACCESS-TOKEN>"
Response (JSON)
                                                                                                                                                                     
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
{
  "paramName": "Service_Areas",
  "value": {
    "geometryType": "esriGeometryPolygon",
    "spatialReference": {
      "wkid": 4326,
      "latestWkid": 4326
    },
    "fields": [
      // one or more field definitions
    ],
    "features": [
      {
        "attributes": {
          "FromBreak": 10,
          "ToBreak": 15,
          "StoreName": "Store 2",
          "Address": "1536 Barton Rd, Redlands, CA 92373",
          "StoreId": "130"
          //more field values
        },
        "geometry": {
          "rings": [
            [
              [
                -117.18199762099999,
                34.170830291000073
              ]
              // additional points that make up the ring for the polygon
            ],
            [
              [
                -117.15662033099994,
                33.956358498000043
              ]
              // additional points that make up the ring for the polygon
            ]
            // additional rings that make up the polygon
          ]
        }
      },
      {
        "attributes": {
          "FromBreak": 5,
          "ToBreak": 10,
          "StoreName": "Store 2",
          "Address": "1536 Barton Rd, Redlands, CA 92373",
          "StoreId": "130"
          // more field values
        },
        "geometry": {
          "rings": [
            // one or more rings that make up the polygon
          ]
        }
      },
      {
        "attributes": {
          "FromBreak": 0,
          "ToBreak": 5,
          "StoreName": "Store 2",
          "Address": "1536 Barton Rd, Redlands, CA 92373",
          "StoreId": "130"
          // more field values
        },
        "geometry": {
          "rings": [
           // one or more rings that make up the polygon
          ]
        }
      },
      {
        "attributes": {
          "FromBreak": 10,
          "ToBreak": 15,
          "StoreName": "Store 3",
          "Address": "11 E Colton Ave, Redlands, CA 92374",
          "StoreId": "121"
          // more field values
        },
        "geometry": {
          "rings": [
           // one or more rings that make up the polygon
          ]
        }
      },
      {
        "attributes": {
          "FromBreak": 5,
          "ToBreak": 10,
          "StoreName": "Store 3",
          "Address": "11 E Colton Ave, Redlands, CA 92374",
          "StoreId": "121"
          // more field values
        },
        "geometry": {
          "rings": [
            // one or more rings that make up the polygon
          ]
        }
      },
      {
        "attributes": {
          "FromBreak": 0,
          "ToBreak": 5,
          "StoreName": "Store 3",
          "Address": "11 E Colton Ave, Redlands, CA 92374",
          "StoreId": "121"
          // more field values
        },
        "geometry": {
          "rings": [
            // one or more rings that make up the polygon
          ]
        }
      },
      {
        "attributes": {
          "FromBreak": 10,
          "ToBreak": 15,
          "StoreName": "Store 1",
          "Address": "1775 E Lugonia Ave, Redlands, CA 92374",
          "StoreId": "120"
          // more field values
        },
        "geometry": {
          "rings": [
            // one or more rings that make up the polygon
          ]
        }
      },
      {
        "attributes": {
          "FromBreak": 5,
          "ToBreak": 10,
          "StoreName": "Store 1",
          "Address": "1775 E Lugonia Ave, Redlands, CA 92374",
          "StoreId": "120"
          // more field values
        },
        "geometry": {
          "rings": [
           // one or more rings that make up the polygon
          ]
        }
      },
      {
        "attributes": {
          "FromBreak": 0,
          "ToBreak": 5,
          "StoreName": "Store 1",
          "Address": "1775 E Lugonia Ave, Redlands, CA 92374",
          "StoreId": "120"
          // more field values
        },
        "geometry": {
          "rings": [
            // one or more rings that make up the polygon
          ]
        }
      }
    ],
    "exceededTransferLimit": false
  }
}

Tutorials

Services

Routing service

Get turn-by-turn directions and solve advanced routing problems.

API support

RoutingFleet routingClosest facility routingService areasLocation-allocationTravel cost matrix
ArcGIS API for JavaScriptFully supportedAccess with geoprocessing taskFully supportedFully supportedAccess with geoprocessing taskAccess with geoprocessing task
ArcGIS Runtime API for AndroidFully supportedAccess with geoprocessing taskFully supportedFully supportedAccess with geoprocessing taskAccess with geoprocessing task
ArcGIS Runtime API for iOSFully supportedAccess with geoprocessing taskFully supportedFully supportedAccess with geoprocessing taskAccess with geoprocessing task
ArcGIS Runtime API for JavaFully supportedAccess with geoprocessing taskFully supportedFully supportedAccess with geoprocessing taskAccess with geoprocessing task
ArcGIS Runtime API for .NETFully supportedAccess with geoprocessing taskFully supportedFully supportedAccess with geoprocessing taskAccess with geoprocessing task
ArcGIS Runtime API for QtFully supportedAccess with geoprocessing taskFully supportedFully supportedAccess with geoprocessing taskAccess with geoprocessing task
ArcGIS API for PythonFully supportedFully supportedFully supportedFully supportedFully supportedFully supported
Esri LeafletAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JS
MapBox GL JSAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JS
OpenLayersAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JSAccess via ArcGIS REST JS
ArcGIS REST JSFully supportedFully supportedFully supportedFully supportedFully supportedFully supported
Full supportPartial support (see notes)Not supported

Tools

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.