我有关于skmap sdk功能的问题。
在创建一条路线并开始导航过程后,是否可以捕获您当前指向的waypoint/viapoint?计算完路由后,routeInformation.viaPointsOnRoute似乎是空的。calculateRoute(route)会自动生成viaPoints列表吗?在SKNavigationDelegate协议参考中,我看到了以下事件函数:
– routingService:didEnterViaPointArea:
– routingService:didReachViaPointWithIndex:
– routingService:didExitViaPointArea:然而,这些方法似乎从未被调用过。不确定是否仅在以编程方式添加ViaPoints时才调用它们。
此外,当routeService触发currentAdvice和nextAdvice方法时,SKRouteAvice位置似乎也是空的。
有没有人可以为我提供一个简单的例子,告诉我如何在导航中创建和捕获当前waypoint位置和下一个waypoint位置?本质上,我试图计算从当前位置到下一个waypoint的方向。
下面是我的路线和导航启动代码的粗略示例:
//Created Route
let route: SKRouteSettings = SKRouteSettings()
route.routeMode = SKRouteMode.Pedestrian
route.startCoordinate = coordinateCurrent!
route.destinationCoordinate = coordinateDestination!
route.shouldBeRendered = true
SKRoutingService.sharedInstance().calculateRoute(r oute)
//Start Navigation
let navSettings: SKNavigationSettings = SKNavigationSettings()
navSettings.navigationType = SKNavigationType.Simulation
navSettings.distanceFormat = SKDistanceFormat.MilesFeet
navSettings.viaPointNotificationDistance=1
self.mapView!.settings.displayMode = SKMapDisplayMode.Mode3D
navSettings.transportMode = SKTransportMode.Pedestrian
SKRoutingService.sharedInstance().startNavigationW ithSettings(navSettings)
//Start Postioner Service
SKPositionerService.sharedInstance().delegate = self
SKPositionerService.sharedInstance().startLocation Update()
routeInfo.viaPointsOnRoute
func routingService(routingService: SKRoutingService!, didChangeNextAdvice nextAdvice: SKRouteAdvice, isLastAdvice:Bool)
{
log(String(nextAdvice.location))
}
func routingService(routingService: SKRoutingService!, didChangeCurrentAdvice currentAdvice: SKRouteAdvice, isLastAdvice:Bool)
{
log(String(currentAdvice.location))
}
func routingService(routingService: SKRoutingService!,
didUpdateViaPointsInformation viaPoints: [AnyObject]!)
{
log("VIA INFO: " + String(viaPoints))
}
func routingService(routingService: SKRoutingService!,
didEnterViaPointArea index: Int32)
{
log("ENTER VIA: " + String(index))
}
func routingService(routingService: SKRoutingService!,
didExitViaPointArea index: Int32)
{
log("EXIT VIA: " + String(index))
}谢谢您抽时间见我!
发布于 2016-05-04 15:41:16
我认为首先我们必须澄清术语。
viaPoint或waypoint ( skobbler/telenav SDK使用viaPoint术语)将是明确声明为"viaPoint“的路由上的一个点。这些点是在路线计算时(通过在路线设置中传递viaPoints数组)或在使用addViaPoint应用编程接口进行导航时添加的。
这些viaPoints将由SDK监控,您将收到didEnterViaPointArea、didReachViaPointWithIndex和didExitViaPointArea回调。
我相信您通过描述路线上的“交汇点”或“需要建议的点”来使用术语“路点”-这些将主要对应于由SDK提供的“路线坐标”(参见routeCoordinationsForRouteWithID应用编程接口)。SDK不会显式显示这些路线坐标--您不会得到任何有关这些点的明确信息,而只是以建议的形式间接通知(“在200米内右转到主街”)。
turn by turn引擎为你提供的是两个这样的坐标之间的“方向”(以建议的形式:“直走”,“右转”,“左转”)。有关如何创建建议的更多详细信息,请参阅文档(here和here)
也许skobbler/Telenav团队可以为你提供更好的建议,如果你能描述你的最终目标(你试图实现的用例)。
https://stackoverflow.com/questions/35229847
复制相似问题