示例中心
功能在线体验
menu 导航 closed 关闭
您现在的位置: 开发 > iOS 导航SDK > 开发指南 > 专业导航 > 智能巡航 >

高德 开发 iOS 导航SDK 开发指南 专业导航 智能巡航

更新时间:2020年10月14日

基本介绍

智能巡航,是一种智能引导模式,无需设置起终点,无需进行算路,就可以在驾车过程中收到语音播报提示、拥堵区域的相关信息。

注意:

1、巡航功能需要联网使用。

2、巡航效果需要在实际驾车过程中体验。

3、巡航模式与导航模式是互斥的,不能同时使用。

  • 如果已经处在导航模式,要开启巡航模式时,需要先调用AMapNaviDriveManager.stopNavi来停止导航,再设置AMapNaviDriveManager.detectedMode才能生效 
  • 如果已经处于巡航模式,要开启导航前,需要先调用AMapNaviDriveManager.detectedMode设置为AMapNaviDetectedModeNone来关闭巡航,再开启导航。

使用说明

实现巡航功能的步骤如下:

第1步,创建AMapNaviDriveManager

- (void)initDriveManager
{
   [[AMapNaviDriveManager sharedInstance] setDelegate:self];
        
   [[AMapNaviDriveManager sharedInstance] setAllowsBackgroundLocationUpdates:YES];
   [[AMapNaviDriveManager sharedInstance] setPausesLocationUpdatesAutomatically:NO];
}
func initDriveManager() {
    AMapNaviDriveManager.sharedInstance().delegate = self
    
    AMapNaviDriveManager.sharedInstance().allowsBackgroundLocationUpdates = true
    AMapNaviDriveManager.sharedInstance().pausesLocationUpdatesAutomatically = false
} 

第2步,开启巡航

调用AMapNaviDriveManager的setDetectedMode方法开启智能巡航。

我们提供三种巡航模式:

  • AMapNaviDetectedModeCamera, 巡航时返回电子眼信息。
  • AMapNaviDetectedModeSpecialRoad, 巡航时返回特殊道路设施信息。
  • AMapNaviDetectedModeCameraAndSpecialRoad,巡航时返回电子眼和特殊道路设施信息。

开启巡航的示例代码如下: 

//开启智能巡航模式
[[AMapNaviDriveManager sharedInstance] setDetectedMode:AMapNaviDetectedModeCameraAndSpecialRoad];
AMapNaviDriveManager.sharedInstance().detectedMode = .cameraAndSpecialRoad

第3步,获取巡航统计数据

巡航时,位置发生变化时,会触发updateCruiseInfo回调,告知您巡航的连续行驶距离连续启用时间

示例代码如下: 

- (void)driveManager:(AMapNaviDriveManager *)driveManager updateCruiseInfo:(AMapNaviCruiseInfo *)cruiseInfo
{
    NSLog(@"updateCruiseInfo:%@", cruiseInfo);
}
func driveManager(_ driveManager: AMapNaviDriveManager, update cruiseInfo: AMapNaviCruiseInfo?) {
      guard let cruiseInfo = cruiseInfo else {
          return
      }
      NSLog("updateCruiseInfo:%@", cruiseInfo)
  } 

第4步,获取道路设施数据

在巡航过程中,出现电子眼或者特殊道路设施时,会进到updateTrafficFacilities回调中,通过AMapNaviTrafficFacilityInfo对象,可获取到道路交通设施信息(如:类型、距离设施的剩余距离等)。 

- (void)driveManager:(AMapNaviDriveManager *)driveManager updateTrafficFacilities:(NSArray<AMapNaviTrafficFacilityInfo *> *)trafficFacilities
{
    NSLog(@"updateTrafficFacilities:%@", trafficFacilities);
}
func driveManager(_ driveManager: AMapNaviDriveManager, updateTrafficFacilities trafficFacilities: [AMapNaviTrafficFacilityInfo]?) {
    guard let trafficFacilities = trafficFacilities else {
        return
    }
    NSLog("updateTrafficFacilities:")
    for aItem in trafficFacilities {
        NSLog("%@", aItem)
    }
}

更多

1、若您想实时将您的巡航位置记录在地图上,看到您的巡航状态,您可创建MAMapView对象,在地图上添加Annotation,并通过自车回调updateNaviLocation回调获取的自车位置实时更新Annotation的坐标,此处可参考官网Demo中的“智能巡航”

2、[[AMapNaviDriveManager sharedInstance] setDetectedMode:AMapNaviDetectedModeNone]; 方法关闭巡航。 

新用户
福利
示例
中心
常见
问题