产品服务
解决方案
文档与支持
定价
导航地图多实例
下载开发文档
鉴权

使用多实例导航地图的能力需要进行鉴权,鉴权接口如下:

NaviAK:使用导航鉴权AK,从地图开放平台上获取,必传参数。

deviceID: 车机设备ID,必传参数。

[BNaviService_Instance authorizeLicenseNaviAK:XXX deviceID:XXX completion:^(NSError *requestError) {
}];
/// nerwork 状态码
typedef NS_ENUM(NSUInteger, BNNetworkErrorCode) {
BN_NETWORK_NO_ERROR = 0, ///< 正常返回
BN_NETWORK_ERROR, ///< 内部错误
BN_NETWORK_PARAMETER_ERROR, ///< 参数错误
BN_NETWORK_MODE_ERROR = 3, ///< 没有设置型号
BN_NETWORK_NO_QUOTA, ///< 没有配额
BN_NETWORK_QUOTA_NO_ENOUGH, ///< 配额不够
BN_NETWORK_QUOTA_INVALID = 6, ///< 配额无效
BN_NETWORK_NO_PERMISSION = 7, ///< 默认无权限
BN_NETWORK_NETWOKR_ERROR = 100, ///< 网络错误
BN_NETWORK_NETWOKR_TIMEOUT, ///< 网络连接超时
BN_NETWORK_SERVER_ERROR, ///< 服务器错误
BN_NETWORK_UNKNOWN_ERROR = 1000, ///< 未知错误
BN_NETWORK_LICENSE_ERROR = 2000 ///< license 被封禁
};

多实例导航地图相关的接口需要在鉴权成功后才能使用。

导航地图多实例

手机开始导航后,SDK支持开发者创建新的导航地图实例,开发者可以把这个地图实例投屏到其他的设备上。该功能的接口和回调在BNMultiMapManagerProtocol.h中。

1. 创建导航地图多实例

通过如下方法创建导航多实例地图。

/**
创建多实例
- Parameters:
- tag: 多实例标记. 不同MapView 需要使用不一样的tag
- frame: 创建的MapView的frame
*/
- (BNKMapView *)createNaviMapViewWithTag:(NSString *)tag withFrame:(CGRect)frame;
2. 接口和回调

(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;

效果图:

车道级车道级

(6)销毁多实例

///销毁多实例
-(void)destroyController;

(7)多实例地图模式

要在驾车页或导航中展示多实例,需分别将页面类型设置为 BNMIMapNaviModeRoute 或 BNMIMapNaviModeNormal。

typedef NS_ENUM(NSInteger, BNMIMapNaviMode) {
BNMIMapNaviModeNormal, //导航
BNMIMapNaviModeRoute, //驾车路线页
};
/// 多实例地图模式
/// - Parameter
/// - BNMIMapNaviMode:
- (void)setNaviMode:(BNMIMapNaviMode)naviMode;

(8)多实例车标大小设置

///车标大小 范围0.0~1.0.默认值:1。
- (void)setCarIconScale:(CGFloat)scale;
///车道级 大小 范围0.0~1.0.默认值:1。
- (void)setHDModelCarScale:(CGFloat)scale;

(9)多实例车标周围的罗盘大小

///罗盘 大小 范围0.0~1.0.默认值:1。
- (void)setCompassScale:(CGFloat)scale;
后台导航地图

手机进入后台导航,由于iOS系统的限制,手机的地图实例无法继续渲染(通过2.1创建的地图实例在后台不会渲染)。如果手机在后台导航时,需要在投屏设备上展示导航地图,需要使用后台导航地图。

该能力的接口在BNBackgroundNavigationViewManagerProtocol.h中。

提供的接口如下:

///获取后台导航地图实例
- (BMKBackgroundNavigationView *)backgroundNavigationView;
///后台导航地图开始渲染
- (void)start;
///后台导航地图停止渲染
- (void)stop;

注意点:

1、stop仅在不需要使用到后台路网的时候的调用。

上一篇

导航实时数据获取

下一篇

无UI导航

本篇文章对您是否有帮助?