Jack Reilly & Dan Lynch
Course: CS 294, a mobile development graduate course
Professor: Eric Brewer
We have developed a system that can be used to present scenic options for routes that users choose.
The server will generate scenic routes (or detours) based on not only dynamically generated content, but from our database of highly scenic destinations or points of interest. The project utilizes routing from Google Maps.
Location-based services are becoming more relevant as millions of people now have iPhones and other devices with GPS systems. This application aims to help people use technology to get out and explore the real world.
The geohash is a single dimensional representation of a two-dimensional coordinate.
We use a geohashing data structure to implement dynamic clustering of icons nodes for scenic content on the map. This enables a more coherent visual interface.
To gather the most relevant and closest scenic content, the geohash of the content is compared with the bounds of the user's route.
The map dynamically updates to match the user's heading (direction) to provide a more immersive exploration experience. This provides consistency in location and orientation between the map on the device and the real world.
User-contributed photos and videos are tagged with the location and orientation. This stored data can enable many future applications such as augmented reality and inferred places and scenes.
Users can choose multiple routes between an origin and a destination based on the scenic content near the different routes.
Scenic waypoints can be added along the route by exploring the scenic content and adding the specific points of interest.
A user can contribute scenic content with their own videos and picture that they took along the trip. Other users may rate this content and even route to it on their trip.
Trip metadata is stored to help users recall very specific memories of their trip. Attributes such as date, comments, titles, and the route taken are stored.
Tight integration between the mobile app and the web interface with an agnostic server back-end.
Rich visualization with content browsing, map exploration, and access to ratings of user-contributed content.
Implementation of the system integrated various technologies: Objective-C, JSON, Django, Python, MySQL, Google Maps API.
Scenic content queried from the network are converted using the NSCoding protocol and stored as objects locally in the iPhone's native database for later access.
Unshared trips are only stored locally, to remember private trips, withought any network access.
Communication with the network is executed using JSON for our protocol. Objects are converted into Objective-C objects.