自定义 OSRM 服务器 Mapbox 导航 SDK

Rob*_*sny 6 java android mapbox-android

是否可以使用自定义 OSRM 服务器 Docker在导航 SDK 中进行路由?如果我在postgrey db 中有自定义街道,我如何计算这条街道上的路线?

某事如

NavigationRoute.builder(this)
                .baseUrl("my server url")
Run Code Online (Sandbox Code Playgroud)

确实向我的服务器发出请求,但在查询中附加了我不想要的参数:

/route/v1/driving/directions/v5/mapbox/driving-traffic/
Run Code Online (Sandbox Code Playgroud)

我只需要

/route/v1/driving/
Run Code Online (Sandbox Code Playgroud)

是否可能或存在一些将 osrm 格式转换为 mapbox 格式的库?

aar*_*rkk 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
Run Code Online (Sandbox Code Playgroud)