Learn how to use autosuggest candidates to find addresses with the ArcGIS Geocoding service.
Prerequisites
You need an ArcGIS Location Platform or ArcGIS Online account.
Steps
Create a new app
-
Open a terminal and create a new folder for your project.
Use dark colors for code blocks Copy mkdir search-with-autosuggest cd search-with-autosuggest -
Initialize a new Node.js project. This creates a
package.jsonfile.Use dark colors for code blocks Copy npm init -
Install the required packages.
Use dark colors for code blocks Copy npm install @esri/arcgis-rest-request @esri/arcgis-rest-geocoding --save -
Create a new JavaScript file named
index.js.Use dark colors for code blocks Copy touch index.js
Get an access token
Create a new API key credential with the correct privileges to get an access token.
- Go to the Create an API key tutorial and create an API key with the following privilege(s):
- Privileges:
- Location services > Geocoding
- Privileges:
- Copy the API key access token to your clipboard when prompted.
Make a request
-
Open your
index.jsfile and import the packages.index.jsUse dark colors for code blocks import { ApiKeyManager } from "@esri/arcgis-rest-request"; import { suggest, geocode } from "@esri/arcgis-rest-geocoding"; -
Paste in your access token.
index.jsUse dark colors for code blocks import { ApiKeyManager } from "@esri/arcgis-rest-request"; import { suggest, geocode } from "@esri/arcgis-rest-geocoding"; const accessToken = "YOUR_ACCESS_TOKEN"; const authentication = ApiKeyManager.fromKey(accessToken); -
Make a request to the ArcGIS Geocoding service to retrieve suggestions for
200 R, then print the results.index.jsUse dark colors for code blocks import { ApiKeyManager } from "@esri/arcgis-rest-request"; import { suggest, geocode } from "@esri/arcgis-rest-geocoding"; const accessToken = "YOUR_ACCESS_TOKEN"; const authentication = ApiKeyManager.fromKey(accessToken); suggest("200 R", { authentication, params: { location: { x: -123.102, y: 49.234, spatialReference: { wkid: 4326 } }, maxSuggestions: 5 } }).then((response) => { console.log(JSON.stringify(response, null, 2)); }); -
Using the first suggestion’s
magic, make another request to look up the full address for that suggestion.Key index.jsUse dark colors for code blocks import { ApiKeyManager } from "@esri/arcgis-rest-request"; import { suggest, geocode } from "@esri/arcgis-rest-geocoding"; const accessToken = "YOUR_ACCESS_TOKEN"; const authentication = ApiKeyManager.fromKey(accessToken); suggest("200 R", { authentication, params: { location: { x: -123.102, y: 49.234, spatialReference: { wkid: 4326 } }, maxSuggestions: 5 } }).then((response) => { console.log(JSON.stringify(response, null, 2)); geocode({ magicKey: response.suggestions[0].magicKey, authentication }).then((geocodedAddress) => { console.log(geocodedAddress); }); }); -
Save the file, then run it from the terminal.
Use dark colors for code blocks Copy node index.js
You should now see the results printed in your console.
{
"suggestions": [
{
"text": "200, Ren'ai District, TWN",
"magicKey": "dHA9MCN0dj0xZWJkOWY4YiNsb2M9Nzk2NDY1NTgjbG5nPTQxI3BsPTEwMTg3MDQ0OCNsYnM9Njo2MDg1ODE4MzsxNDoxODU0Mzk3I2xuPVdvcmxk",
"isCollection": false
},
{
"text": "200 Robson St, Vancouver, BC, V6B, CAN",
"magicKey": "dHA9MCN0dj0xZWJkOWY4YiNsb2M9MjU1MDg1MTEjbG5nPTQxI2huPTIwMCNsbj1Xb3JsZA==",
"isCollection": false
},
{
"text": "200 Raymur Ave, Vancouver, BC, V6A 3K8, CAN",
"magicKey": "dHA9MCN0dj0xZWJkOWY4YiNsb2M9MjU1MTAzOTIjbG5nPTQxI2huPTIwMCNsbj1Xb3JsZA==",
What's next?
Learn how to use additional location services in these tutorials: