Пользовательский сервер OSRM Mapbox Navigation SDK

Возможно ли использовать пользовательский сервер 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?


person Robert Smiesny    schedule 29.11.2018    source источник


Ответы (1)


Я обнаружил, что достаточно просто использовать OSRM в качестве резервного сервера для Graphhopper Navigation API (который, как мне кажется, был создан из Mapbox). Я не пробовал использовать его напрямую с SDK Mapbox, но, возможно, стоит попробовать. По сути, все, что мне нужно было сделать, это запустить сервер пересылки, который будет получать координаты и параметры маршрута и передавать их в OSRM, а затем добавлять UUID запроса на обратном пути, чтобы SDK не жаловался. Я реализовал сервер на Ruby с помощью Sinatra, код ниже:

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
person aardvarkk    schedule 17.11.2020