【问题标题】:Custom OSRM server Mapbox Navigation SDK自定义 OSRM 服务器 Mapbox Navigation SDK
【发布时间】:2020-11-19 01:51:09
【问题描述】:

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

某事

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

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

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

我只需要

/route/v1/driving/

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

【问题讨论】:

    标签: java android mapbox-android


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多