MeetPoint
Calculate the optimal meeting point for a group of people on a map.
The Problem
You have 3 friends, each in a different part of the city. Where do you meet? Everyone opens Google Maps and starts suggesting places near themselves. Thirty minutes of "how about..." messages later, you still haven't decided.
MeetPoint solves this by finding the optimal meeting point -- the location that minimizes total travel time for everyone.
How It Works
Adding Participants
Each person shares their location (via GPS or by entering an address). The app supports 2 to 5 participants.
Finding the Optimal Point
For 2 people, the algorithm finds the midpoint. For 3 or more, it uses a grid search:
- 01Calculate the geographic center of mass of all participants
- 02Generate a grid of candidate points around the center
- 03For each candidate, query the OSRM Table API to get travel times from every participant
- 04Score each candidate by total travel time
- 05Pick the point with the lowest total
The OSRM Table API is key -- it returns a full travel-time matrix in a single request, making the grid search fast even with many candidates.
Venue Discovery
Once the optimal point is found, the app queries the Overpass API for nearby venues:
- •Cafes and restaurants
- •Parks and public spaces
- •Bars and pubs
Each venue shows the estimated travel time from every participant, so the group can pick a place that works for everyone.
Tech Stack
- •Kotlin -- Android native
- •Jetpack Compose -- Material 3 UI
- •OSRM Table API -- travel-time matrix (open source, no API key)
- •Overpass API -- venue search via OpenStreetMap
- •Play Services Location -- geolocation
- •OkHttp -- HTTP client
Design Decisions
No Map SDK
MeetPoint doesn't embed a map. Instead, it shows a clean list of venues with travel times and a "Navigate" button that opens the user's preferred maps app. This keeps the APK small and avoids map SDK licensing.
Privacy
No accounts, no server, no data collection. All computation happens on-device. API calls go directly to open-source services (OSRM and Overpass) that don't require authentication.
Grid Search vs. Optimization
I considered using iterative optimization (gradient descent on travel time), but the grid search approach is simpler, more predictable, and fast enough for 5 participants with a 100-point grid.