Ios SKMaps和通道点/航路点

Ios SKMaps和通道点/航路点,ios,swift,skmaps,Ios,Swift,Skmaps,我对skmap sdk功能有疑问 创建路线并开始导航过程后,是否仍有必要捕获当前指向的航路点/viapoint?计算路由后,它似乎路由信息。viaPointsOnRoute为空。calculateRoute(route)是否自动生成过孔点列表?在SKNavigationDelegate协议参考中,我看到了以下事件函数: – routingService:didEnterViaPointArea: – routingService:didReachViaPointWithIndex: – rout

我对skmap sdk功能有疑问

创建路线并开始导航过程后,是否仍有必要捕获当前指向的
航路点
/
viapoint
?计算路由后,它似乎
路由信息。viaPointsOnRoute
为空。
calculateRoute(route)
是否自动生成
过孔点列表
?在
SKNavigationDelegate
协议参考中,我看到了以下事件函数:

– routingService:didEnterViaPointArea:
– routingService:didReachViaPointWithIndex:
– routingService:didExitViaPointArea:
然而,这些方法似乎从未被调用。不确定是否仅在通过编程方式添加
过孔点时才调用它们

此外,当routeService激发currentAdvice和NextAvice方法时,SKRouteAvice位置也显示为空

是否有人可以向我提供一个简单的示例,说明如何在导航时创建和捕获当前
航路点
位置和下一个
航路点
位置?基本上,我正在尝试计算从当前位置到下一个
航路点的方向

下面是我的路线和导航启动代码的大致示例:

//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))
}

谢谢你抽出时间

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

viaPoint或航路点(skobbler/telenav SDK使用viaPoint术语)将是路线上明确声明为“viaPoint”的点。这些点在路线计算时(通过在路线设置中传递一个数组)或使用API导航时添加

这些过孔点将由SDK监控,您将收到didEnterViaPointArea、didReachViaPointWithIndex和didExitViaPointArea回调

我相信您是通过描述沿途的“交叉点”或“需要建议的点”来使用术语“航路点”——这些将主要对应于SDK提供的“航路坐标”(参见API)。SDK未明确显示这些路线坐标-您不会获得关于这些点的任何明确信息,但只能以通知的形式间接通知(“在200米内右转到主街”)

转弯引擎为您提供的正是两个这样的坐标之间的“方向”(以建议的形式:“继续前进”、“向右拐”、“向左拐”)。有关如何创建建议的更多详细信息,请参阅文档(和)

如果您能够描述您的最终目标(您试图实现的用例),那么skobbler/Telenav团队可能会为您提供更好的建议