VoyageMapper is an Android app (built in Java) that helps you explore the world
through Wikivoyage travel guides.
Use your current location or search for a place, view nearby articles, and
explore the sights from within each destination — all on an interactive map.
- 🧭 Map-based discovery — View Wikivoyage destinations within 20 km of your current location.
- 🔍 Search anywhere — Find destinations worldwide and see related travel articles.
- 🗺️ Map the Sights — Tap a place to fetch all
{{see|do|listing}}listings from Wikivoyage and plot them on the map (with contact and practical info). - 📍 Custom markers — Black pins for places, green pins for sights, with labeled titles.
- 📱 Bottom sheet previews — Article details, images, and quick links.
- 🔍 Save articles for offline — When saved you can still load the info without a connection
- 🧑💻 Built in Java — Uses AndroidX, Google Maps SDK, Retrofit, and Glide.
| Purpose | Library / API |
|---|---|
| Map & location | Google Maps SDK, Play Services Location |
| HTTP / API | Retrofit2 + OkHttp |
| JSON parsing | Gson |
| Image loading | Glide |
| Clustering | Google Maps Utils |
| Material UI | Material Components for Android |
| Testing | Junit 5, Mockito and Robolectric |
| Persistence | Room DB used for caching and saving |
| Logging | Android logging and firebase crashlytics |
-
Clone the repo
git clone https://github.com/<your-username>/VoyageMapper.git cd VoyageMapper
-
Open in Android Studio File → Open → Select the project folder
-
Add your Google Maps API key In app/src/debug/res/values/google_maps_api.xml, replace YOUR_KEY_HERE
-
Run the app on an emulator or device.
Future Enhancements
🏞️ Add support for more listing types ({{do}}, {{eat}}, etc.)
🗂️ Offline caching of fetched Wikivoyage articles (and a recently views list)
🔖 __Bookmark favorite places and sights__
🧭 Compass / route directions integration
🌐 Multi-language Wikivoyage support
- Add an option to somehow load something useful when a user goes to an area with no articles within 20km (wikivoyage limit)
- Fix entries like "** {{marker | name=Cloonacauneen | url=https://www.clooncastle.com/ | type=see | lat=53.323 | long=-8.988 }} is a restored 15th-century towerhouse that's now a restaurant, often booked for weddings." to use the trailing text
- Put in appropriate messaging when there is no network or results
- Better home screen for the app, more enticing
- Include places from Atlas Obscura and wikipedia
- Miles and km - known as true conversion in media wiki language
- Allow listing with no type (see isSeeOrDo in TemplateMatcher) - often used for tourist info, e.g https://en.wikivoyage.org/wiki/Rijswijk