示例中心
功能在线体验
控制台

高德 开发 iOS 导航SDK 开发指南 在地图上导航 智能巡航

更新时间:2017年11月30日

基本介绍

智能巡航,是一种智能导航模式,无需输入起点终点,在驾车过程中可以准确检测电子眼、特殊道路设施信息,给驾驶者提示。同时,还可结合实时路况,提供更加丰富的播报,提升驾车体验。

注意:

1、巡航需要连接互联网,由此产生的流量费用由运营商收取。

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

使用说明

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

第 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]; 方法关闭巡航。

示例中心 功能
在线体验
常见问题