bcgov / ols-devkit

Developer Tool Kit using the BC Address Geocoder, BC Route Planner and the Geomark Web Service
Apache License 2.0
6 stars 5 forks source link

In demo app, route tab, add a way to grab and drag any turning point along a displayed route #196

Open mraross opened 3 years ago

mraross commented 3 years ago

Map apps such as google maps let you dynamically reroute a route at any turn. Such an app makes a temporary waypoint out of every intersection on the route where a turn is made. You can grab one of these waypoints and move it where you want it, then the app reroutes accordingly. Except for making and displaying temporary waypoints at every turn, our demo app works the same way, allowing you to drag any waypoints you have defined.

The directions resource of the router actually returns a starting point for every leg of directions. You just have to filter out any points associated with a leg that continues instead of turns then make and display the needed temporary waypoints for your users to drag. When a user grabs a turning point that isn't a user-defined waypoint, you add that point to the list of waypoints in the correct position in the sequence (e.g., after the appropriate user-defined waypoint), submit a route request, and display the resulting route. This may seem hard to do in real-time but keep in mind the user can only select and drag one turning point at time.

Here is an example directions request so you can see where to find the leg points:

https://router.api.gov.bc.ca/directions.json?apikey=11dd756f680c47b5aef5093d95543738&points=-123.4192894%2C48.4577939%2C-123.4171234%2C48.4257821%2C-123.3666577%2C48.4605116&criteria=fastest

This feature was requested by the Height Clearance Tool team at Ministry of Transportation and Infrastructure (Jean Bishop).