使用多实例导航地图的能力需要进行鉴权,鉴权接口如下:
NaviAK:使用导航鉴权AK,从地图开放平台上获取,必传参数。
deviceID: 车机设备ID,必传参数。
[BNaviService_Instance authorizeLicenseNaviAK:XXX deviceID:XXX completion:^(BOOL requestSuc, BOOL hasPermission) {}];
通过如下方法创建导航多实例地图。
/**创建多实例- Parameters:- tag: 多实例标记. 不同MapView 需要使用不一样的tag- frame: 创建的MapView的frame*/- (BNKMapView *)createNaviMapViewWithTag:(NSString *)tag withFrame:(CGRect)frame;
(1)设置地图状态
支持设置地图为2d、3d和全览状态
/// 全览/// - Parameter viewAll: 是否全缆- (void)setViewAllMode:(BOOL)viewAll;///设置地图为3d模式- (void)set3DMode;/// 设置地图为2d模式- (void)set2DMode;
可以通过下面两个回调,设置2D、3D模式下车标的具体位置:
/// 配置地图2D模式车标的偏移量/// 坐标原点为0,0。/// x表示横坐标的偏移量,负数往左边移动,正数往右边移动/// y表示纵坐标的偏移量,负数往下边移动,正数往上边移动- (CGPoint)carOffsetFor2DMode;/// 配置地图3D模式车标的偏移量/// 坐标原点为0,0。/// x表示横坐标的偏移量,负数往左边移动,正数往右边移动/// y表示纵坐标的偏移量,负数往下边移动,正数往上边移动- (CGPoint)carOffsetFor3DMode;
2D、3D、全览的效果如下:
2D
3D
全览
(2)设置路线全览展示区域
接口如下
/// 添加自定义UI碰撞,添加后,路线全览时会路线的展示区域不显示在frame的范围内/// - Parameter frame: 自定义碰撞的frame- (void)addUIViewBound:(CGRect)frame;/**设置路线全览展示区域- Parameter insets: 路线全览展示区域距离MapView四周的边距*/- (void)setRouteShowRect:(UIEdgeInsets)insets;
(3)自定义地图元素
具体接口如下:
/// 显示路况/// - Parameter show: 为YES,展示路况,为NO,隐藏路况- (void)showRoadCondition:(BOOL)show;/// 隐藏路线动态标签,默认全部展示/// - Parameter types: 隐藏的标签类型数组,数组元素为BNMapCarElementType类型,封装为NSNumber对象/// 注意:这个接口不会记住之前传入的隐藏标签类型。/// 比如第一次隐藏 以下标签:@[@(BNMapCarElementType_Camera), @(BNMapCarElementType_EnterRoad), @(BNMapCarElementType_Jam)];/// 后续又需要显示@(BNMapCarElementType_Camera) , 则需要再次传入@[ @(BNMapCarElementType_EnterRoad), @(BNMapCarElementType_Jam)];- (void)hideMapCarElement:(NSArray <NSNumber *> *)types;/// 清除自定义icon/// - Parameter type: 自定义icon类型-(void)clearDIYIcon:(BNMIDIYImageType)type;/// 设置自定义icon/// img: 车标图片/// imageType:车标类型- (void)setDIYIcon:(UIImage *)img type:(BNMIDIYImageType)imageType;/// 设置自定义icon 显示 隐藏/// isShow: yes 是显示 NO隐藏/// imageType:车标类型- (void)setDIYImageShow:(BOOL)isShow type:(BNMIDIYImageType)imageType;/// 设置途径点icon/// images: 数组中存放的是UIimage/// indexes:途径点下标- (void)setWayPointCustomImages:(NSArray<UIImage *> *)images indexes:(NSArray *)indexes;
(4)车道级开关
/// 是否支持车道级,app需要具备车道级权限调用才生效。/// supportLane: YES 开启车道级。 NO 不开启车道级。 如果有车道级权限,默认开启/// 开启车道级后,当进入车道级路段后会自动设置当前多实例为3D模式。- (void)setSupportLane:(BOOL)supportLane;
效果图:
(5)设置白天黑夜样式
/**白天黑夜模式 YES 代表黑夜。NO代表白天 。 默认白天模式*/- (void)setNight:(BOOL)isNight;
效果图:
手机进入后台导航,由于iOS系统的限制,手机的地图实例无法继续渲染(通过2.1创建的地图实例在后台不会渲染)。如果手机在后台导航时,需要在投屏设备上展示导航地图,需要使用后台导航地图。
该能力的接口在BNBackgroundNavigationViewManagerProtocol.h中。
提供的接口如下:
///获取后台导航地图实例- (BMKBackgroundNavigationView *)backgroundNavigationView;///后台导航地图开始渲染- (void)start;///后台导航地图停止渲染- (void)stop;
上一篇
下一篇
本篇文章对您是否有帮助?