智能巡航 最后更新时间: 2021年01月22日
基本介绍
智能巡航,是一种智能引导模式,无需设置起终点,无需进行算路,就可以在驾车过程中收到语音播报提示、拥堵区域的相关信息。
注意:
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]; 方法关闭巡航。