Choosing the Best Geographic Information System (GIS) for Trek
This blogpost is a modified version of an internal Trek document. You can view the internal document here.
Integrating Google Maps was our original plan at Trek until we realized that the cost of integrating Google Maps would be outside our budget, as well as the budget of anyone deploying Trek.
Although Google provides its customers with a $200 credit for the use of their APIs, including the Google Maps Platform APIs, once customers exceed the $200 limit, they are faced with potentially thousands of dollars in billing statements.
The truth is, Google holds a monopoly over high-quality geographical information, especially their Places API, which provides the best up-to-date Points of Interest (POI) data. Using Google would be the best move if we could afford to lose the money. Unfortunately, we are not one of those companies that can lose money for a decade before making a profit.
Furthermore, Google does not allow its customers to cache or store any of its data (with the exception of place IDs), which means that every time we want to display a place name for the user, we have to call Google's API—something we cannot afford.
This blog post goes through the GIS alternatives to Google Maps that we have explored in the process of designing and building Trek.
What is a GIS?
A Geographic Information System (GIS) is a powerful tool that allows users to visualize, analyze, and interpret spatial and geographic data. In the context of Trek, a GIS is essential for enhancing the user experience by providing detailed and interactive maps, route planning, and information on places of interest. It integrates various data sources to create a comprehensive view of the trip and the world.
A Geographic Information System (GIS) for Trek should offer the following features or services:
Maps - Various visual dynamic maps imagery. Displays maps for ‘Map View’ and location markers, ‘Pins’ within the map, and geographic information (longitude and latitude) to provide context when searching for places.
Routes - Provides routing information in ‘driving’, ‘transiting’, ‘cycling’, or ‘walking’. Find best routes from place to place in different transportation methods.
Places of Interest (POI) - Provides information on places and ability to search for places. Gathers and provides place information including place ID (identifiers), name, location, description, address, photo, and reviews.
What makes a GIS Good (for Trek)?
GIS can be used in many different applications and use cases. The goal of GIS in Trek is to help meet its functional and non-functional requirements, including scalability and future-oriented design. The goal is to explore different GIS options Trek can integrate, while considering the following:
Compliance — “Are we complying with GIS’ Terms of Service? Are we stealing data and potentially committing academic misconduct?”
UI/UX — “Does the UI Look Good?”
Usability — “Does it provide good usability with sufficient information of places and provide quality search and personalization?”
Sustainability — “Will the system be financially sustainable with the integration costs? Can costs be lowered by caching or storing data?”
Maintainability — “Is the information easily manageable and does not require frequent extensive maintenance on Trek’s end?”
Dependency — “Can we manage our own information without relying on the GIS? Are we able to migrate from this GIS to another system easily”
Comparison of GIS API Integrations
Some GIS services do not provide all three packages (Maps, Routing, POI). Some GIS services do not allow caching or storage of data. Some GIS services are outside our budget.
Summary
API | Maps & Routing | Places of Interests | Caching & Storing | Pricing | Description |
---|---|---|---|---|---|
Google Maps Platform | Best | Photos, Reviews | Restrictive | High | Best up-to-date POI information |
FourSquare | N/A (POI only) | Photos, Reviews | Restrictive | Medium | Provides decent POI and places ‘personalization’; best for tourist POI |
Mapbox | Good | Integrates FourSquare | Restrictive (non-enterprise) | Medium/Low | Alternative to Google Maps. Good UI. OSM-based. Second most popular |
LocationIQ | No transit routing | Only GeoCoding | Allowed | Low | Fully OSM Data packaged as API. Comes with only Geocoding data (no POI) |
MapTiler | Good | Basic | Client-side | Low | |
HERE | Good | Basic | 30 days or Response Header | Low | No permanent storage of location IDs |
MapQuest | No transit routing | Basic | Restrictive (non-paid) | Low |
POI Data: Image, Description, and Reviews Data
Apart from Google Maps Platform and ForeSquare, OSM-based GIS APIs only provide basic POI data. Some GIS APIs do not provide contact information or opening hours. We can integrate the following technologies to provide end-users with these data:
- Image – For landmarks, well-known businesses (e.g. McDonalds), and attractions, use Wikipedia API to fetch images that are shareable for commercial purposes.
- Description – For landmarks, well-known businesses (e.g. McDonalds), and attractions, use AI generated descriptions.
- Contact, Hours, and Reviews – Use TripAdvisor or Yelp API to link review data, open hours, and contact information. Only load review data if the user clicks on it to limit unnecessary API calls. Yelp allows caching up to 24 hours but has no free tier.
- In-House User-Contributed POI Data System – Support an in-house user-contributed POI Data system, where users can upload images, description, and reviews to a place.