首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这里,Maps SDK iOS Swift 4转一圈导航要花费太长时间才能启动。

在这里,Maps SDK iOS Swift 4转一圈导航要花费太长时间才能启动。
EN

Stack Overflow用户
提问于 2018-02-22 10:13:21
回答 1查看 618关注 0票数 0

这里的地图Mobile-SDK上缺乏可用的文档和资源,所以我希望有人能帮助我们解决问题。

我们已经在我们的应用程序(iOS SDK Swift4 XCode9)中开发了逐圈导航。所有操作都很好,正确下载声音,正确计算路由,正确启动定位,然后调用该方法:

代码语言:javascript
复制
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)
}

一旦调用了navigationManager中的开始转弯导航方法,这个回调最终会被调用:

代码语言:javascript
复制
func navigationManager(_ navigationManager: NMANavigationManager, didUpdateManeuvers currentManeuver: NMAManeuver?, _ nextManeuver: NMAManeuver?) {
        nextRoadName.text = nextManeuver?.roadName as String?
        displayManeuverImage(icon: currentManeuver?.icon)
}

一旦执行了这个回调,导航就可以完美地工作了。

我们的问题是,从打电话到:

代码语言:javascript
复制
navigationManager.startTurnByTurnNavigation(mapRoute.route)

而回调是随机长的。有时它是1秒(几乎从来没有)和很多次它长达2分钟,这是不可接受的生产应用程序。

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

有人知道这是怎么回事吗?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-28 07:09:40

这是因为下一个策略只在用户开始移动时发送。当用户处于静止状态时,发动机无法确定位置的方向、精度。一旦探测到足够的运动,机动就会被发射。

在计算路线之后,你应该展示发动机的初始机动。也许,如果用户没有移动,您可以展示一个老的策略,以推动用户移动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48924754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档