Amazon Location – Add Maps and Location Awareness to Your Applications
Update June 1, 2021 – Amazon Location Service is now generally available and includes routing and raster (satellite) maps. You can easily and securely add maps, geocoding, routing, tracking, and geofencing to your applications. Read more about the new features in our new blog post here or try it now in the console.
We want to make it easier and more cost-effective for you to add maps, location awareness, and other location-based features to your web and mobile applications. Until now, doing this has been somewhat complex and expensive, and also tied you to the business and programming models of a single provider.
Introducing Amazon Location Service
Today we are making Amazon Location Service available in preview form and you can start using it today. Priced at a fraction of common alternatives, Amazon Location Service gives you access to maps and location-based services from multiple providers on an economical, pay-as-you-go basis.
You can use Amazon Location Service to build applications that know where they are and respond accordingly. You can display maps, validate addresses, perform geocoding (turn an address into a location), track the movement of packages and devices, and much more. You can easily set up geofences and receive notifications when tracked items enter or leave a geofenced area. You can even overlay your own data on the map while retaining full control.
All About Location Service
Let’s take a look at the types of resources that Amazon Location Service makes available to you, and then talk about how you can use them in your applications.
Maps – Amazon Location Service lets you create maps that make use of data from our partners. You can choose between maps and map styles provided by Esri and by HERE Technologies, with the potential for more maps & more styles from these and other partners in the future. After you create a map, you can retrieve a tile (at one of up to 16 zoom levels) using the
GetMapTile function. You won’t do this directly, but will use Mapbox GL, Tangram, or another library instead.
Place Indexes – You can choose between indexes provided by Esri and HERE. The indexes support the
SearchPlaceIndexForPosition function which returns places, such as residential addresses or points of interest (often known as POI) that are closest to the position that you supply, while also performing reverse geocoding to turn the position (a pair of coordinates) into a legible address. Indexes also support the
SearchPlaceIndexForText function, which searches for addresses, businesses, and points of interest using free-form text such as an address, a name, a city, or a region.
Trackers –Trackers receive location updates from one or more devices via the
BatchUpdateDevicePosition function, and can be queried for the current position (
GetDevicePosition) or location history (
GetDevicePositionHistory) of a device. Trackers can also be linked to Geofence Collections to implement monitoring of devices as they move in and out of geofences.
Geofence Collections – Each collection contains a list of geofences that define geographic boundaries. Here’s a geofence (created with geojson.io) that outlines a park near me:
Location Service in Action
I can use the AWS Management Console to get started with Location Service and then move on to the AWS Command Line Interface (CLI) or the APIs if necessary. I open the Amazon Location Service Console, and I can either click Try it! to create a set of starter resources, or I can open up the navigation on the left and create them one-by-one. I’ll go for one-by-one, and click Maps:
Then I click Create map to proceed:
I enter a Name and a Description:
Then I choose the desired map and click Create map:
The map is created and ready to be added to my application right away:
Next, I want to track the position of devices so that I can be notified when they enter or exit a given region. I use a GeoJSON editing tool such as geojson.io to create a geofence that is built from polygons, and save (download) the resulting file:
I click Create geofence collection in the left-side navigation, and in Step 1, I add my GeoJSON file, enter a Name and Description, and click Next:
Now I enter a Name and a Description for my tracker, and click Next. It will be linked to the geofence collection that I just created:
The next step is to arrange for the tracker to send events to Amazon EventBridge so that I can monitor them in CloudWatch Logs. I leave the settings as-is, and click Next to proceed:
I review all of my choices, and click Finalize to move ahead:
The resources are created, set up, and ready to go:
I can then write code or use the CLI to update the positions of my devices:
After I do this a time or two, I can retrieve the position history for the device:
I can write Amazon EventBridge rules that watch for the events, and use them to perform any desired processing. Events are published when a device enters or leaves a geofenced area, and look like this:
Finally, I can create and use place indexes so that I can work with geographical objects. I’ll use the CLI for a change of pace. I create the index:
Then I query it to find the addresses and points of interest near the location:
I can also do a text-based search:
Both of the searches have other options; read the Geocoding, Reverse Geocoding, and Search to learn more.
Things to Know
Amazon Location Service is launching today as a preview, and you can get started with it right away. During the preview we plan to add an API for routing, and will also do our best to respond to customer feedback and feature requests as they arrive.
Pricing is based on usage, with an initial evaluation period that lasts for three months and lets you make numerous calls to the Location Service APIs at no charge. After the evaluation period you pay the prices listed on the Amazon Location Pricing page.
Location Service is available in the US East (N. Virginia), US East (Ohio), US West (Oregon), Europe (Ireland), and Asia Pacific (Tokyo) Regions. For more information please check out our documentation here.