这里的地图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)
}一旦调用了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分钟,这是不可接受的生产应用程序。
在这个等待时间内,我们的代码都不会被执行,所以它肯定是Maps-SDK的内部问题,或者是一些我不知道的内部问题。
有人知道这是怎么回事吗?
提前感谢!
发布于 2018-02-28 07:09:40
这是因为下一个策略只在用户开始移动时发送。当用户处于静止状态时,发动机无法确定位置的方向、精度。一旦探测到足够的运动,机动就会被发射。
在计算路线之后,你应该展示发动机的初始机动。也许,如果用户没有移动,您可以展示一个老的策略,以推动用户移动。
https://stackoverflow.com/questions/48924754
复制相似问题