2016-02-05 47 views
2

我有关于skmap sdk功能的问题。SKMaps和ViaPoints/WayPoints

在创建路线并开始导航过程之后,是否有捕获目前正在导向的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)) 
} 

谢谢您的时间!

回答

1

我认为首先我们必须澄清术语。

viaPoint或waypoint(skobbler/telenav SDK使用viaPoint术语)将作为显式声明为“viaPoint”的路径上的一个点。这些点将在路由计算时添加(通过在路由设置中传递viaPoints的数组)或在使用addViaPoint API进行导航时添加。

这些viaPoints将受到SDK的监控,您将收到didEnterViaPointArea,didReachViaPointWithIndex和didExitViaPointArea回调。

我相信您通过描述沿路线的“路口”或“需要建议的点”来使用术语“航点” - 这些大多数与SDK提供的“航线坐标”相对应(请参阅routeCoordinationsForRouteWithID API )。这些路线坐标不是由SDK明确表达的 - 您不会获得关于这些点的任何明确信息,但只会以建议的形式(“在200米内右转到Main Street上”)发出间接通知。

什么是转弯引擎为您提供的是两个这样的坐标之间的“方向”(形式为建议:“直行”,“右转”,“左转”)。见关于如何建议的更多细节(herehere

创建也许skobbler /泰为团队能为您提供更好的建议,如果你能描述你的最终目标(有什么用处情况下,你要实现的目标)的文档。

相关问题