Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom OSRM server Mapbox Navigation SDK

Is it possible using custom OSRM server (Docker) for routing in navigation SDK? If i have custom streets in postgrey db, how can i calculate route on this streets?

Something as

NavigationRoute.builder(this)
                .baseUrl("my server url")

does make request to my server but with additional params in query which i dont want :

/route/v1/driving/directions/v5/mapbox/driving-traffic/

I need just

/route/v1/driving/

Is it possible or exist some lib which converts osrm format to mapbox format?

like image 633
Robert Smiesny Avatar asked Nov 29 '18 13:11

Robert Smiesny


1 Answers

I've found that it's reasonably trivial to use OSRM as a backing server for the Graphhopper Navigation API (which was forked from Mapbox I believe). I haven't tried using it directly with the Mapbox SDKs, but it might be worth a shot. Basically all I had to do was start up a forwarding server that would grab the coordinates and route parameters and pass them to OSRM, then add a request UUID on the way back to stop the SDK from complaining. I implemented the server in Ruby using Sinatra, and the code is below:

require 'net/http'
require 'sinatra'
require 'sinatra/json'

get '/directions/v5/:user/driving/:coordinates' do
  uri = URI("http://router.project-osrm.org/route/v1/driving/#{params['coordinates']}")
  uri.query = URI.encode_www_form({
    alternatives: params['alternatives'],
    continue_straight: params['continue_straight'],
    geometries: params['geometries'],
    overview: params['overview'],
    steps: params['steps']
  })
  res = JSON.parse(Net::HTTP.get_response(uri).body)
  res["uuid"] = SecureRandom.uuid
  json(res)
end
like image 75
aardvarkk Avatar answered Nov 16 '22 18:11

aardvarkk