The client's main goal was to design an outdoor navigation app for the blind similar to their indoor navigation. The UI had to be simple, along with accessibility, announcements, intersections, and finding friends features. However, obtaining and processing all of the significant data required to construct an effective outdoor navigation app for the blind was challenging. The requirement was that the module gives outdoor positioning information, which should comprise the following:
- Points of interest (POI) that are close to the user
- Street and intersection in proximity to the user
- Courses of the user-direction of travel, based on changes in GPS location
- Speed of the user based on changes in GPS locations
The outdoor navigation app for the blind is designed with a limited number of tabs - Routes, Location, POIs, and Settings - for convenience of use. Here waypoints are used to record and save the journey. A comprehensive route menu offers a variety of options for selecting a destination, starting with a POI. Voice instructions and commands were added to make the navigation app for the blind highly independent, just for the user app.
We used TypeScript to create an Outdoor SDK node module that supports outdoor navigation solutions by offering key APIs for outdoor positioning. This SDK gives intersections surrounding the user and delivers an intersection in the user's travel direction by analyzing Open Street Map (OSM) data for that region. This data can be updated at any moment by uploading a new data file to the AWS S3 bucket and processing it with AWS Batch without requiring any changes to the node module. The SDK's search functionality uses Foursquare API services and native Android and iOS functionalities.
The POIs contain information such as the name of the POI, its distance from the user, an angle from the user, id, geolocation, and category, among other things. They can be searched by name, category, and address. iOS uses the MKLocalSearch API to search for addresses, while Android uses Geocoder. The nearby POIs are retrieved via the Foursquare service and the MKLocalPointsOfInterestRequest API for iOS version 14 and higher. Geocoder and ReverseGeocodeLocation, respectively, are used in the Android and iOS SDKs to implement reverse geocoding.
The SDK has the following advantages:
- It addresses a substantial portion of outdoor navigation needs, such as searching for POIs, discovering POIs in close proximity, determining an upcoming intersection, and determining the user’s direction and speed
- It processes OSM data to provide a solution for getting the intersection around the user as well as in the direction of movement
- Without needing to change the build, the OSM data can be updated as needed
- To add a waypoint, the user just needs to press the + button or shake the phone
The SDK has the following significant implications:
- Enabled an advanced navigation system for people with disabilities
- Users may search for points of interest and get a sense of which ones are nearby
- It also allowed users to manage their movement per the application’s output