Our story

Our team of 3 engineers wanted to create a skill which helps people conveniently find a nearby place, such as a clinic, all with their voice. For those who are in a rush, or just want Alexa telling you the nearest cafe, this skill will gladly help.

Ask for a place of interest, and an Alexa will tell you the name of the nearest place in a 10 mile radius. The skill will display a card containing the place name, phone and address to your Alexa app.

We decided for our project to fueled by Open Street Map in order to promote open data and expand the growing open source community.

Challenges

Researching to find the best performing Open-source map dataset was difficult, as many commercial closed sourced datasets like Google Maps are more frequently updated and not reliant on volunteer data. We found Open Street Map dataset being by far the best open-source dataset, and is listed under the open data set in "resources" for the hackaton page.

Later deciding on the ideal api for the forward/reverse geocoder was difficult. We first used Nominatim, the official OSM forward/reverse geocoder, but had to switch it out as it was not intended for commercial use. Looking at the Nominatim 3rd party providers, we switched to open.mapquest. But that resource had very small data limits. We finally decided on going with Opencagedata, with around 2,500 request a day.

Learning new Javascript syntaxes and formulas, like the Haversine formula for latitude and longitude distance comparison, was also an exciting task.

Sample Places/Amenity

fuel, charging station, clinic, hospital, police, waste disposal, cafe, library, fire station, restaurant, bank, post office,

Instructions

  1. Say "Ask Project Near Me for clinic" and the skill will launch.
  2. The app will tell you the closest clinic and send a display card of clinics in a 10 mile radius to your Alexa app.

Alternative Instructions

  1. Say "Open Project Near me" and the skill will launch.
  2. The skill will tell you a prompt, "Please say the name of the area " .
  3. Say the area you want, such as "clinic".
  4. The app will tell you the closest clinic and send a display card of clinics in a 10 mile radius to your Alexa app.

Project details overview

This project uses Open Street Map's forward/reverse geocoder and location database to find areas near you. The code is open sourced on gitlab/github.

Specifics

This skill uses the Alexa Skills Kit SDK 2.0 for Node.js for Alexa skill libraries.

The API resources we used was Opencagedata, which is a official third party provider of OSM Nominatim, stated on Nominatim wiki page. We use Opencagedata for reverse geocoding to get latitude and longitude from the user's location.

We use the fetched user's latitude and longitude and pass the data into an overpass query to get selected areas in a 10 mile radius in that location. Opencagedata is then used for forward geocoding if the address is not given in the overpass query. Comparing the fetched data, Alexa will tell you the closest place near your location, and output the other places of interest with details on a display card to your Alexa app.

Programming language used was Node.js. To use asyc/await in node.js, you must select Node.js version 8.10 during lambda runtime.

Updates

  • For the UK skill, the units are in Kilometers. (16093.4 KM radius from your location)

  • The address of the closest place is said alongside the distance and place name.

Built With

Share this project:

Updates