0

SO 关于 HERE Maps 的文档和资源很少Mobile-SDK,所以我希望有人可以帮助我们。

我们在应用程序 ( iOS SDK Swift4 XCode9) 中开发了转弯导航。一切正常,声音下载正确,路线计算正确,定位正确启动,然后我们调用该方法:

private func calculateRoute() {
        print("Calculating route")
        // Routing mode
        let routingMode = NMARoutingMode.init(routingType: NMARoutingType.fastest, transportMode: NMATransportMode.car, routingOptions: NMARoutingOption.avoidBoatFerry)
        routeManager.calculateRoute(withStops: [initialCoordinate, destinationCoordinate], routingMode: routingMode) {
            (routeResult: NMARouteResult?, error: NMARoutingError?) in
            if error == nil || error == NMARoutingError.none {
                let mapRoute = routeResult?.routes?.first
                self.route = NMAMapRoute.init(mapRoute!)
                self.gpsMapView.add(mapObject: self.route!)
                self.startNavigation(mapRoute: self.route!)
            } else {
                os_log("Route calculation completed with errors", log: OSLog.default, type: .debug)
                print(error.debugDescription)
            }
        }
    }

private func startNavigation(mapRoute: NMAMapRoute) {
    // Start the turn-by-turn navigation
    navigationManager.startTurnByTurnNavigation(mapRoute.route)
}

一旦调用了里面的 start turn by turn 导航方法navigationManager,最终会调用这个回调:

func navigationManager(_ navigationManager: NMANavigationManager, didUpdateManeuvers currentManeuver: NMAManeuver?, _ nextManeuver: NMAManeuver?) {
        nextRoadName.text = nextManeuver?.roadName as String?
        displayManeuverImage(icon: currentManeuver?.icon)
}

执行此回调后,导航将完美运行。

我们的问题是调用之间花费的时间:

navigationManager.startTurnByTurnNavigation(mapRoute.route)

并且回调是随机长的。有时是 1 秒(几乎没有),很多时候长达 2 分钟,这对于生产应用程序来说是不可接受的。

在这段等待时间内,我们的代码都没有被执行,所以它一定是 HERE 内部的东西Maps-SDK,或者是我不知道的一些内部问题。

有人知道这里发生了什么吗?

提前致谢!

4

1 回答 1

1

发生这种情况是因为只有在用户开始移动时才会发送下一个动作。当用户静止时,发动机无法确定哪个方向,位置的准确性。一旦检测到足够的运动,就会启动演习。

您应该显示引擎在计算路线后的初始机动。也许如果用户没有移动,您可以展示旧动作的祝酒词来推动用户移动。

于 2018-02-28T07:09:40.903 回答