是否可以使用自定义OSRM服务器 (Docker)在导航SDK中进行路由?如果我在 postgrey db 中有自定义街道,该如何计算这条街道上的路线?
类似
NavigationRoute.builder(this)
.baseUrl("my server url")
向我的服务器发出请求,但是在查询中我不想添加其他参数:
/route/v1/driving/directions/v5/mapbox/driving-traffic/
我只需要
/route/v1/driving/
是否有可能存在将osrm格式转换为mapbox格式的库?
答案 0 :(得分:1)
我发现将OSRM用作Graphhopper Navigation API(我相信是从Mapbox派生的)的后备服务器相当简单。我尚未尝试将其直接与Mapbox SDK结合使用,但值得一试。基本上,我要做的就是启动一个转发服务器,该服务器将获取坐标和路由参数并将其传递给OSRM,然后在回程的途中添加一个请求UUID以阻止SDK抱怨。我使用Sinatra在Ruby中实现了服务器,代码如下:
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