【问题标题】:Route calculation is not accurate while importing route from a list of points - HERE SDK for Android/iOS(Premium Edition)从点列表导入路线时路线计算不准确 - HERE SDK for Android/iOS(Premium Edition)
【发布时间】:2022-08-08 13:12:15
【问题描述】:

我们正在尝试使用CoreRouter.calculateRoute(List<GeoCoordinate>, RouteOptions, Listener) 记录的here 方法从点列表中计算路线。点列表来自从 Google 地图导出的 GPX 文件。

请在此处查看谷歌地图上的原始路线 origin route (https://www.google.com/maps/d/u/0/edit?mid=1jlwfml-kg0QLW7vHB4aMw6pDjvTevHU&usp=sharing)

我们在 HERE MAP 中得到的结果是这样的: HERE Map result

我们将 Google Map 和 HERE Map 的路线点一一比较,发现该点在 Here map 上并不像在 Google map 上那样完美地位于道路上。请在此处查看比较:Comparison

积分列表:

<trkpt lat=\"37.3665039\" lon=\"-121.9179512\">
        <name>TP0</name>
      </trkpt>
      <trkpt lat=\"37.3663126\" lon=\"-121.9178105\">
        <name>TP1</name>
      </trkpt>
      <trkpt lat=\"37.3660126\" lon=\"-121.9175858\">
        <name>TP2</name>
      </trkpt>
      <trkpt lat=\"37.3657063\" lon=\"-121.9173579\">
        <name>TP3</name>
      </trkpt>
      <trkpt lat=\"37.3653819\" lon=\"-121.9171101\">
        <name>TP4</name>
      </trkpt>
      <trkpt lat=\"37.3652228\" lon=\"-121.916993\">
        <name>TP5</name>
      </trkpt>
      <trkpt lat=\"37.3653404\" lon=\"-121.9167218\">
        <name>TP6</name>
      </trkpt>
      <trkpt lat=\"37.3657065\" lon=\"-121.9159425\">
        <name>TP7</name>
      </trkpt>
      <trkpt lat=\"37.3659858\" lon=\"-121.9153481\">
        <name>TP8</name>
      </trkpt>
      <trkpt lat=\"37.366333\" lon=\"-121.9146232\">
        <name>TP9</name>
      </trkpt>
      <trkpt lat=\"37.3663824\" lon=\"-121.9145151\">
        <name>TP10</name>
      </trkpt>
      <trkpt lat=\"37.3666919\" lon=\"-121.9139078\">
        <name>TP11</name>
      </trkpt>
      <trkpt lat=\"37.366698\" lon=\"-121.9137683\">
        <name>TP12</name>
      </trkpt>
      <trkpt lat=\"37.3666968\" lon=\"-121.913702\">
        <name>TP13</name>
      </trkpt>
      <trkpt lat=\"37.3666941\" lon=\"-121.9136539\">
        <name>TP14</name>
      </trkpt>
      <trkpt lat=\"37.3666879\" lon=\"-121.9136134\">
        <name>TP15</name>
      </trkpt>
      <trkpt lat=\"37.3666756\" lon=\"-121.913573\">
        <name>TP16</name>
      </trkpt>
      <trkpt lat=\"37.3666331\" lon=\"-121.913451\">
        <name>TP17</name>
      </trkpt>
      <trkpt lat=\"37.3664775\" lon=\"-121.9133349\">
        <name>TP18</name>
      </trkpt>
      <trkpt lat=\"37.3659049\" lon=\"-121.9129044\">
        <name>TP19</name>
      </trkpt>
      <trkpt lat=\"37.3658757\" lon=\"-121.9129628\">
        <name>TP20</name>
      </trkpt>

有没有办法使用CoreRouter.calculateRoute(List&lt;GeoCoordinate&gt;, RouteOptions, Listener) 方法更准确地计算路线?

我们项目中的代码如下:

 val TESTING_WAYPOINTS = arrayOf(
            GeoCoordinate(37.3665039, -121.9179512),
            GeoCoordinate(37.3663126, -121.9178105),
            GeoCoordinate(37.3660126, -121.9175858),
            GeoCoordinate(37.3657063, -121.9173579),
            GeoCoordinate(37.3653819, -121.9171101),
            GeoCoordinate(37.3652228, -121.916993),
            GeoCoordinate(37.3653404, -121.9167218),
            GeoCoordinate(37.3657065, -121.9159425),
            GeoCoordinate(37.3659858, -121.9153481),
            GeoCoordinate(37.366333, -121.9146232),
            GeoCoordinate(37.3663824, -121.9145151),
            GeoCoordinate(37.3666919, -121.9139078),
            GeoCoordinate(37.366698, -121.9137683),
            GeoCoordinate(37.3666968, -121.913702),
            GeoCoordinate(37.3666941, -121.9136539),
            GeoCoordinate(37.3666879, -121.9136134),
            GeoCoordinate(37.3666756, -121.913573),
            GeoCoordinate(37.3666331, -121.913451),
            GeoCoordinate(37.3664775, -121.9133349),
            GeoCoordinate(37.3659049, -121.9129044),
            GeoCoordinate(37.366377, -121.9137508), 
            GeoCoordinate(37.3658757, -121.9129628),
        )

    // set route options
    val mRouteOptions = RouteOptions().apply {
        this.transportMode = RouteOptions.TransportMode.CAR
        this.routeCount = navigationOptions.routeCount
        this.routeType = navigationOptions.routeType
        setTunnelsAllowed(navigationOptions.tunnelAllowed)
        setTollRoadsAllowed(navigationOptions.tollAllowed)
        setHighwaysAllowed(navigationOptions.highwaysAllowed)
        setFerriesAllowed(navigationOptions.boatsAllowed)
        setDirtRoadsAllowed(navigationOptions.dirtRoadsAllowed)
        this.locale = Locale(\"en\")
    })

    fun calculateRoute(listener: CoreRouter.Listener) {
        mCoreRouterListener = listener
        // force using the preset waypoints
        val presetWaypoints = TESTING_WAYPOINTS
        for (p in presetWaypoints) {
            Log.d(TAG, \"[TRACK]: ${p.latitude} ${p.longitude}\")
            mRoutePoints.add(p)
        }

        mCoreRouter.calculateRoute(mRoutePoints, mRouteOptions, this)
    }
  • 你能分享一下代码sn-p吗?我们需要检查所有东西都传递给 CoreRouter.calculateRoute(List<GeoCoordinate>, RouteOptions, Listener)
  • @HEREDeveloperSupport,我在问题中添加了代码 sn-p 。你能看看吗?谢谢你。

标签: here-api heremaps-android-sdk heremaps-ios-sdk


【解决方案1】:

正如我们所见,请求中使用了很多选项。因此路由器会尝试根据请求中提供的选项找到最佳优化路由。如果您想将请求与任何其他服务进行比较,只需在两个服务中使用没有任何限制的普通请求。

// set route options val mRouteOptions = RouteOptions().apply { this.transportMode = RouteOptions.TransportMode.CAR this.routeCount = navigationOptions.routeCount this.routeType = navigationOptions.routeType setTunnelsAllowed(navigationOptions.tunnelAllowed) setTollRoadsAllowed(navigationOptions.tollAllowed) setHighwaysAllowed(navigationOptions.highwaysAllowed) setFerriesAllowed(navigationOptions.boatsAllowed) setDirtRoadsAllowed(navigationOptions.dirtRoadsAllowed) this.locale = Locale("en") })

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多