高级功能 最后更新时间: 2021年01月22日
配置类 - 逻辑相关
导航组件的配置类AMapNaviCompositeUserConfig提供了强大的设置选项,除了基础功能里描述的设置起终点、车辆信息,还有如下设置。
- 设置导航组件启动时,是否直接进入导航界面,进行算路并自动开始导航。需要注意的是,如果设置为YES,为了保证算路成功,还需设置有效的终点,否则会报错。
/**
* @brief 设置导航组件启动时,直接进入导航界面(跳过路径规划页面)进行算路并自动开始导航. since 5.3.0
* @param directly 是否直接进入导航界面, 默认值为NO. 注意:如果为YES,为了保证算路成功,还需设置有效的终点,否则会报错
*/
- (void)setStartNaviDirectly:(BOOL)directly;
- 设置导航组件界面dismiss时,是否调用停止导航和销毁AMapNaviDriveManager的单例,接口如下:
/**
* @brief 设置导航组件界面dismiss时,是否调用 [AMapNaviDriveManager destroyInstance] 来尝试销毁 AMapNaviDriveManager 的单例. since 5.4.0
* @param need 是否尝试销毁 AMapNaviDriveManager 的单例,默认为YES.
*/
- (void)setNeedDestoryDriveManagerInstanceWhenDismiss:(BOOL)need;
我们知道,导航SDK的驾车导航管理类AMapNaviDriveManager是一个单例,导航组件内部也是基于该单例进行路径规划和导航的,开发者也可以同时使用该单例进行事件和数据监听。如果您设置了NO,在退出导航组件的时候,内部不会调用停止导航和销毁AMapNaviDriveManager单例,您可以继续保持本次导航。该接口常用于司乘同显场景。
- 设置导航组件启动时,是否需要进行路径规划. 注意:此设置只有在-setStartNaviDirectly: 为YES时,才起作用。该设置一般用在如下场景:已经使用了AMapNaviDriveManager规划好路线,想直接使用此路线进行导航,也就是只想使用导航组件导航界面的“图面能力”。
/**
* @brief 设置导航组件启动时,是否需要进行路径规划. 此设置只有在setStartNaviDirectly为YES时,才起作用. since 5.4.0
* @param need 是否需要进行路径规划,默认为YES. 如果为NO,导航组件启动时将不再进行算路,直接使用 AMapNaviDriveManager 单例已经规划好的路径进行导航
*/
- (void)setNeedCalculateRouteWhenPresent:(BOOL)need;
- 设置当退出实时导航时,是否弹出“确认退出导航”的AlertView.
/**
* @brief 设置当退出实时导航时,是否弹出“确认退出导航”的AlertView. since 5.5.0
* @param need 是否弹出“确认退出导航”的AlertView,默认为YES.
*/
- (void)setNeedShowConfirmViewWhenStopGPSNavi:(BOOL)need;
- 设置驾车路径规划策略. 注意:如设置,将清空用户之前选择的值。如不设置,则取用户之前选择的值,如用户之前无选择过,则取 AMapNaviDrivingStrategyMultipleDefault
/**
* @brief 设置驾车路径规划策略. 注意:如设置,将清空用户之前选择的值。如不设置,则取用户之前选择的值,如用户之前无选择过,则取 AMapNaviDrivingStrategyMultipleDefault . since 6.1.0
* @param driveStrategy 参考 AMapNaviDrivingStrategy .
*/
- (void)setDriveStrategy:(AMapNaviDrivingStrategy)driveStrategy;
- 设置多路线导航模式,关于多路线导航请参考
/**
* @brief 设置多路线导航模式(实时导航中拥有若干条备选路线供用户选择,默认模式), 或单路线导航模式. 注意: 1、设置的导航模式会在下一次主动路径规划时生效. 2、多路线导航模式还需同时满足以下4个条件才能够生效:a.路径规划时 AMapNaviDrivingStrategy 需选用多路径策略; b.起终点的直线距离需<=80KM; c.不能有途径点; d.车辆不能是货车类型. since 6.3.0
* @param multipleRouteNaviMode YES:多路线导航模式, NO:单路线导航模式. 默认为YES.
*/
- (void)setMultipleRouteNaviMode:(BOOL)multipleRouteNaviMode;
- 设置一个ViewController,SDK内部会使用该ViewController来present导航组件
/**
* @brief 设置一个 ViewController,SDK内部会使用该 ViewController 来 present 导航组件. since 7.2.0
* @param presenterViewController SDK会使用该对象来 present 导航组件
*/
- (void)setPresenterViewController:(UIViewController *_Nonnull)presenterViewController;
配置类 - UI相关
AMapNaviCompositeUserConfig关于UI的配置有如下设置选项。
- 主题皮肤类型,导航组件一共有3种主题皮肤可选择,接口和效果图如下所示。
/**
* @brief 设置导航组件的主题皮肤类型. since 5.4.0
* @param themeType 主题皮肤类型,默认为 AMapNaviCompositeThemeTypeDefault(蓝色),参考 AMapNaviCompositeThemeType .
*/
- (void)setThemeType:(AMapNaviCompositeThemeType)themeType;
- 添加自定义View,导航组件的导航界面一共提供了3个地方可供您传入自定义View。
第一处自定义View会显示在界面的底部区域,容器View的宽度为屏幕宽度减去133,高度为46,接口和效果如下所示:
/**
* @brief 设置驾车导航界面自定义View,该View将显示在界面的底部区域,容器View的宽度为屏幕宽度减去133,高度为46. since 6.1.0
* @param customView 将被显示在底部区域的自定义view
*/
- (void)addCustomViewToNaviDriveView:(UIView *_Nonnull)customView;
第二处自定义View宽度为63,高度为53,会显示在界面的左侧靠边垂直中心区域,接口和效果如下所示:
/**
* @brief 设置驾车导航界面左侧自定义View,该View宽度为63,高度为53,将显示在界面的左侧靠边垂直中心区域. since 6.9.0
* @param customView 将被显示的自定义view
*/
- (void)addLeftCustomViewToNaviDriveView:(UIView *_Nonnull)customView;
第三处自定义View会显示在界面的底部区域之下,容器View的宽度为屏幕宽度,高度最高为200。注意:设置了该自定义View,导航界面将自动设置为不支持横屏。接口和效果如下所示:
/**
* @brief 设置驾车导航界面自定义View,该View将显示在界面的底部区域之下,容器View的宽度为屏幕宽度,高度最高为200. 注意: 设置了自定义View,导航界面将自动设置为不支持横屏 since 6.1.0
* @param customBottomView 将被显示在底部区域之下的自定义view
* @return 是否设置成功(高度超过200将会返回NO)
*/
- (BOOL)addCustomBottomViewToNaviDriveView:(UIView *_Nonnull)customBottomView;
- 设置是否显示路口放大图,关于路口放大图的更多信息,可以参考导航实时数据获取-路口放大图
/**
* @brief 设置驾车导航时是否显示路口放大图. since 6.1.0
* @param need 是否显示路口放大图,默认为YES.
*/
- (void)setShowCrossImage:(BOOL)need;
配置类 - 图面相关
AMapNaviCompositeUserConfig关于图面的配置有如下设置选项。
- 到达目的地后是否移除路线和牵引线,关于牵引线的更多说明,可参考自定义其他图面元素—牵引线
/**
* @brief 设置驾车导航界面到达目的地后是否移除路线和牵引线. since 5.5.0
* @param need 是否移除,默认为NO.
*/
- (void)setRemovePolylineAndVectorlineWhenArrivedDestination:(BOOL)need;
- 地图是否展示实时路况。
/**
* @brief 设置地图是否展示实时路况. since 6.6.0
* @param need 是否显示,默认为YES.
*/
- (void)setMapShowTraffic:(BOOL)need;
- 地图的日夜模式,关于日夜模式的更多说明,可参考其他自定义能力—日夜模式
/**
* @brief 设置导航界面地图的日夜模式. since 7.1.0
* @param type 参考 AMapNaviViewMapModeType . 默认为 AMapNaviViewMapModeTypeDayNightAuto(自动切换模式)
*/
- (void)setMapViewModeType:(AMapNaviViewMapModeType)type;
- 导航界面的跟随模式,关于跟随模式的更多说明,可参考显示模式与跟随模式—跟随模式
/**
* @brief 设置导航界面跟随模式. since 7.1.0
* @param mode 参考 AMapNaviViewTrackingMode . 默认为 AMapNaviViewTrackingModeCarNorth(车头朝上)
*/
- (void)setTrackingMode:(AMapNaviViewTrackingMode)mode;
- 智能比例尺开关,关于智能比例尺的更多说明,可参考其他自定义能力—智能比例尺
/**
* @brief 设置比例尺智能缩放. since 7.1.0
* @param autoZoomMapLevel 锁车模式下是否为了预见下一导航动作自动缩放地图. 默认为YES
*/
- (void)setAutoZoomMapLevel:(BOOL)autoZoomMapLevel;
添加自定义Annotation和Overlay
和AMapNaviDriveView一样,导航组件也提供了添加了自定义Annotation和Overlay的方法,更多信息可参考添加自定义Annotation和Overlay。具体使用方法也可参考官方Demo——导航组件添加自定义overlay 。
/**
* @brief 在驾车导航界面添加自定义标注. 注意:每次退出导航之后,标注都会被清空. since 5.5.0
* @param annotation 会被显示在驾车导航界面地图上, 具体参考 AMapNaviCompositeCustomAnnotation .
*/
- (void)addAnnotation:(AMapNaviCompositeCustomAnnotation *_Nonnull)annotation;
/**
* @brief 移除驾车导航界面的自定义标注. since 5.5.0
* @param annotation 具体参考 AMapNaviCompositeCustomAnnotation .
*/
- (void)removeAnnotation:(AMapNaviCompositeCustomAnnotation *_Nonnull)annotation;
/**
* @brief 在驾车导航界面添加自定义Overlay. 注意:每次退出导航之后,Overlay都会被清空. since 6.7.0
* @param customOverlay 会被显示在驾车导航界面地图上, 此对象需遵守AMapNaviCompositeOverlay协议,否则无效, 具体参考官方Demo CustomOverlayCompositeViewController 类 .
*/
- (void)addCustomOverlay:(id <AMapNaviCompositeOverlay>_Nonnull)customOverlay;
/**
* @brief 移除驾车导航界面的自定义Overlay. since 6.7.0
* @param customOverlay 具体参考 AMapNaviCompositeOverlay .
*/
- (void)removeCustomOverlay:(id <AMapNaviCompositeOverlay>_Nonnull)customOverlay;