{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508856823,"data":{"id":71712507,"title":"6.2初始化","slug":"tu6fqe","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
客户端通过服务管理ServiceMgr获取图层服务并通过图层服务获取到各个图层控制器,最后调用图层控制器的各个图层业务接口完成图层的绘制显示。
在初始化图层服务前,客户端需要准备好内聚、图层优先级、图层碰撞配置文件(由AutoSDK解析)和图层的样式文件(由客户端解析)。图层服务的初始化和反初始化都是和MapEngineID绑定,如果需要基于这个MapView绘制业务图层的话,那有几个MapView就需要进行几次的初始化和反初始化(包括鹰眼MapView)。
在初始化之后,就可以调用com.autonavi.gbl.layer.BizControlService.setStyle设置所有图层控制器的com.autonavi.gbl.map.layer.observer.IPrepareLayerStyle对象,用于返回图层的样式和纹理。
调用com.autonavi.gbl.layer.BizControl.addClickObserver注册点击观察者、
调用com.autonavi.gbl.layer.BizControl.addFocusChangeObserver焦点变化观察者等。
从510版本开始,图层增加了业务图层的默认样式纹理,也就是说客户端无需再配置所有图层的样式纹理,图层就能显示出来纹理。这些默认的样式纹理是基于Auto基础版的,客户端可以进行一些简单的样式配置修改,图片资源替换,如果默认样式纹理不符合需求,依然可以使用旧的样式纹理模式。详情见业务图层默认样式纹理
//初始化业务图层优先级配置及内聚功能配置\nboolean com.autonavi.gbl.layer.BizControlService.init(@MapEngineID.MapEngineID1 int engineId, String strJsonFilename)\n\n//初始化业务图层的内部图层样式纹理,如果使用自定义图层样式,则无需调用该接口\nboolean com.autonavi.gbl.layer.BizControlService.initInnerStyle(IMapViewImpl mapView, ICardServiceImpl cardService, IPrepareLayerParamImpl customParam, InnerStyleParam param)\n\n//锁定地图姿态 \nvoid com.autonavi.gbl.layer.BizControlService.lockMapPosture(@MapEngineID.MapEngineID1 int \tengineId,MapPostureControlParam param)\n \n//设置图元样式回调接口\nvoid com.autonavi.gbl.layer.BizControlService.setStyle(@MapEngineID.MapEngineID1 int engineId, IPrepareLayerStyle pStyle)\n\n//控制图层显隐\nvoid com.autonavi.gbl.layer.BizControlService.setVisible(@MapEngineID.MapEngineID1 int \tengineId,boolean bVisible)\n\n//图层业务服务反初始化接口,反初始化所有control,由IServiceMgr::UnInitBL触发\nvoid com.autonavi.gbl.layer.BizControlService.unInit()\n\n//图层业务服务反初始化接口,反初始化engineId对应的control,在释放map view前调用。\nvoid com.autonavi.gbl.layer.BizControlService.unInit(@MapEngineID.MapEngineID1 int engineId)\n\n//初始化图层组合碰撞配置\nboolean com.autonavi.gbl.layer.BizControlService.initCollisionConfig(MapView mapView, String strJsonFilename)\n\n//图层业务添加点击观察者回调\nvoid com.autonavi.gbl.layer.BizControl.addClickObserver(ILayerClickObserver pObserver)\n\n//添加图层业务焦点变化观察者回调\nvoid com.autonavi.gbl.layer.BizControl.addFocusChangeObserver(ILayerFocusChangeObserver pObserver)\n\n//删除图层业务点击观察者回调\nvoid com.autonavi.gbl.layer.BizControl.removeClickObserver(ILayerClickObserver pObserver)\n\n//删除图层业务焦点变化观察者回调\nvoid com.autonavi.gbl.layer.BizControl.removeFocusChangeObserver(ILayerFocusChangeObserver pObserver)\n\n//获取组队图层业务接口\nBizAGroupControl com.autonavi.gbl.layer.BizControlService.getBizAGroupControl(MapView pMapView)\n//获取区域类图层业务接口\nBizAreaControl com.autonavi.gbl.layer.BizControlService.getBizAreaControl(MapView pMapView)\n//获取车标图层业务接口\nBizCarControl com.autonavi.gbl.layer.BizControlService.getBizCarControl\t(MapView pMapView)\n//获取自定义类图层业务接口\nBizCustomControl com.autonavi.gbl.layer.BizControlService.getBizCustomControl(MapView pMapView)\n//获取飞线图层业务接口\nBizFlyLineControl com.autonavi.gbl.layer.BizControlService.getBizFlyLineControl(MapView pMapView)\n//获取鹰眼图业务接口\nBizGuideEagleEyeControl com.autonavi.gbl.layer.BizControlService.getBizGuideEagleEyeControl(@EGLDeviceID.EGLDeviceID1 int deviceId)\n//获取路线、导航相关图层业务接口\nBizGuideRouteControl com.autonavi.gbl.layer.BizControlService.getBizGuideRouteControl(MapView pMapView)\n//获取图层扎标类业务接口\nBizLabelControl com.autonavi.gbl.layer.BizControlService.getBizLabelControl(MapView pMapView)\n//获取放大路口图层业务接口\nBizRoadCrossControl com.autonavi.gbl.layer.BizControlService.getBizRoadCrossControl(MapView pMapView)\n//获取交通设施图层业务接口\nBizRoadFacilityControl com.autonavi.gbl.layer.BizControlService.getBizRoadFacilityControl(MapView pMapView)\n//获取搜索相关图层业务接口\nBizSearchControl com.autonavi.gbl.layer.BizControlService.getBizSearchControl(MapView pMapView)\n//获取用户相关图层业务接口\nBizUserControl com.autonavi.gbl.layer.BizControlService.getBizUserControl(MapView pMapView)
说明:函数详情,请复制函数名称到在线API搜索
初始化图层服务
/** @brief 定义类MapLayerImpl,地图相关图层业务实现 */\npublic class MapLayerImpl {\n private BizControlService mBizControlService;\n private BizAGroupControl mAGroupControl;\n private BizAreaControl mAreaControl;\n private BizCarControl mCarControl;\n private BizGuideEagleEyeControl mGuideEagleEyeControl;\n private BizGuideRouteControl mGuideRouteControl;\n private BizLabelControl mLabelControl;\n private BizRoadCrossControl mRoadCrossControl;\n private BizRoadFacilityControl mRoadFacilityControl;\n private BizSearchControl mSearchControl;\n private BizUserControl mUserControl;\n private BizCustomControl mBizCustomControl; \n\n private void initLayerService() {\n if (mBizControlService == null) {\n mBizControlService = (BizControlService) ServiceMgr.getServiceMgrInstance().getBLService(SingleServiceID.BizControlSingleServiceID);\n\n String styleBlPath = AutoConstant.PATH + "style_bl.json";\n //下沉默认style_bl.json文件放在LayerAsset下,如果用户想使用默认文件,需设置路径给BizControlService.init\n boolean init = mBizControlService.init(MapEngineID.MapEngineIdMain, styleBlPath);\n if (!init) {\n CommonUtil.showShortToast("bizMapEngineIdMain初始化失败");\n }\n\n boolean initEagle = mBizControlService.init(MapEngineID.MapEngineIdMainEagleEye, styleBlPath);\n if (!initEagle) {\n CommonUtil.showShortToast("bizMapEngineIdMainEagleEye初始化失败");\n }\n\n int isInit = mBizControlService.isInit();\n if (isInit != ServiceInitStatus.ServiceInitDone) {\n CommonUtil.showShortToast("biz初始化失败");\n }\n }\n }\n ...\n}
获取图层各控制对象
/** @brief 定义类MapLayerImpl,地图相关图层业务实现 */\npublic class MapLayerImpl {\n ...\n /**\n * @brief 初始化所有control\n */\n public void initAllControls() {\n if (mBizControlService != null) {\n // 组队图层业务接口\n mAGroupControl = mBizControlService.getBizAGroupControl(mMapView);\n // 区域类图层业务接口\n mAreaControl = mBizControlService.getBizAreaControl(mMapView);\n // 车标图层业务接口\n mCarControl = mBizControlService.getBizCarControl(mMapView);\n mCarControl.updateStyle(BizCarType.BizCarTypeCruise);\n // 鹰眼控制接口(注意不是EngineID)\n mGuideEagleEyeControl = mBizControlService.getBizGuideEagleEyeControl(mMapView.getDeviceId());\n // 路线相关图层业务接口\n mGuideRouteControl = mBizControlService.getBizGuideRouteControl(mMapView);\n // 图层扎标类业务接口\n mLabelControl = mBizControlService.getBizLabelControl(mMapView);\n // 放大路口图层业务接口\n mRoadCrossControl = mBizControlService.getBizRoadCrossControl(mMapView);\n // 交通设施图层业务接口\n mRoadFacilityControl = mBizControlService.getBizRoadFacilityControl(mMapView);\n // 搜索相关图层业务接口\n mSearchControl = mBizControlService.getBizSearchControl(mMapView);\n // 用户相关图层业务接口\n mUserControl = mBizControlService.getBizUserControl(mMapView);\n // 自定义类图层业务接口\n mBizCustomControl = mBizControlService.getBizCustomControl(mMapView);\n }\n }\n ...\n}\n
反初始化图层服务
/** @brief 定义类MapLayerImpl,地图相关图层业务实现 */\npublic class MapLayerImpl {\n ...\n /**\n * @brief 反初始化主图和biz\n */\n public void uninit() {\n if (mBizControlService != null) {\n mBizControlService.setStyle(MapEngineID.MapEngineIdMain, null);\n mBizControlService.setStyle(MapEngineID.MapEngineIdMainEagleEye, null);\n mBizControlService.unInit(MapEngineID.MapEngineIdMain);\n mBizControlService.unInit(MapEngineID.MapEngineIdMainEagleEye);\n mBizControlService = null;\n }\n\n //注销所有control\n mAGroupControl = null;\n mAreaControl = null;\n mCarControl = null;\n mGuideEagleEyeControl = null;\n mGuideRouteControl = null;\n mLabelControl = null;\n mRoadCrossControl = null;\n mRoadFacilityControl = null;\n mSearchControl = null;\n mUserControl = null;\n mBizCustomControl = null;\n\n ServiceMgr.getServiceMgrInstance().removeBLService(SingleServiceID.BizControlSingleServiceID);\n }\n ...\n}\n
以下是业务图层内聚("virtual_bus")、优先级("layer_priority")以及业务图层间碰撞("collision_combination")JSON配置样例:
以下是默认配置,配置文件名是style_bl.json。具体配置方法见业务图层内聚和业务图层间碰撞
{\n "virtual_bus": {\n "car_layer": 1,\n "rct_route_layer": 1,\n "cruise_congestion_layer": 1,\n "cruise_lane_layer": 1,\n "guide_mix_fork_layer": 1,\n "cruise_congestion_event_layer": 1,\n "cruise_facility_layer": 1,\n "cruise_camera_layer": 1,\n "guide_camera_layer": 1,\n "guide_facility_layer": 1,\n "guide_interval_camera_layer": 1,\n "guide_traffic_event_layer": 1,\n "route_arrow_layer": 1,\n "update_light_bar": 1,\n "guide_congestion_layer": 1,\n "guide_label_layer": 1,\n "guide_path_board_layer": 1,\n "guide_eta_event_layer": 1,\n "guide_dynamic_level": 1,\n "stop_guide": 1,\n "guide_eagle_eye": 1,\n "guide_traffic_light_layer": 1\n },\n "layer_priority": {\n "agroup_control": {\n "agroup_layer": {\n "draw_priority": 140,\n "sub_priority": 2300\n },\n "agroup_endpoint_layer": {\n "draw_priority": 140,\n "sub_priority": 2400\n }\n },\n "area_control": {\n "area_range_onmap_circle_layer": {\n "draw_priority": 60,\n "sub_priority": 2500\n },\n "area_range_onmap_polygon_line_layer": {\n "draw_priority": 60,\n "sub_priority": 2600\n },\n "area_range_onmap_circle_line_layer": {\n "draw_priority": 60,\n "sub_priority": 2600\n },\n "area_range_onmap_polygon_layer": {\n "draw_priority": 60,\n "sub_priority": 2500\n },\n "area_range_onmap_polygon_exhaustedPoint_layer": {\n "draw_priority": 140,\n "sub_priority": 2650\n },\n "area_range_onmap_circle_exhaustedPoint_layer": {\n "draw_priority": 140,\n "sub_priority": 2650\n },\n "route_restrict_layer": {\n "draw_priority": 100,\n "sub_priority": 1400\n },\n "route_end_area_parent_layer": {\n "draw_priority": 140,\n "sub_priority": 3500\n },\n "route_end_area_child_layer": {\n "draw_priority": 140,\n "sub_priority": 3100\n },\n "route_end_area_polygon_layer": {\n "draw_priority": 100,\n "sub_priority": 1500\n },\n "route_end_area_polyline_layer": {\n "draw_priority": 100,\n "sub_priority": 1500\n }\n },\n "car_control": {\n "car_guide_layer": {\n "draw_priority": 140,\n "sub_priority": 5400\n },\n "car_cruise_layer": {\n "draw_priority": 140,\n "sub_priority": 5300\n },\n "car_search_layer": {\n "draw_priority": 140,\n "sub_priority": 5500\n },\n "car_route_layer": {\n "draw_priority": 140,\n "sub_priority": 1750\n },\n "car_familiar_layer": {\n "draw_priority": 140,\n "sub_priority": 5350\n },\n "car_eagleeye_layer": {\n "draw_priority": 1000,\n "sub_priority": 5400\n }\n },\n "flyline_control": {\n "car_end_line_layer": {\n "draw_priority": 100,\n "sub_priority": 300\n },\n "car_end_point_layer": {\n "draw_priority": 140,\n "sub_priority": 5200\n }\n },\n "cross_control": {\n "guide_vector_cross_layer": {\n "draw_priority": 140,\n "sub_priority": 6000\n },\n "guide_raster_image_layer": {\n "draw_priority": 140,\n "sub_priority": 6100\n }\n },\n "label_control": {\n "cruise_congestion_layer": {\n "draw_priority": 140,\n "sub_priority": 500\n },\n "cruise_lane_layer": {\n "draw_priority": 140,\n "sub_priority": 600\n },\n "guide_mix_fork_layer": {\n "draw_priority": 140,\n "sub_priority": 3670\n },\n "route_pop_add_via_point_layer": {\n "draw_priority": 140,\n "sub_priority": 10000\n },\n "route_pop_remove_via_point_layer": {\n "draw_priority": 140,\n "sub_priority": 10000\n },\n "route_pop_traffic_event_layer": {\n "draw_priority": 140,\n "sub_priority": 10000\n },\n "route_pop_search_layer": {\n "draw_priority": 140,\n "sub_priority": 10000\n },\n "route_pop_end_area_layer": {\n "draw_priority": 140,\n "sub_priority": 10000\n },\n "gps_point_layer": {\n "draw_priority": 140,\n "sub_priority": 100\n }\n },\n "road_facility_control": {\n "cruise_congestion_event_layer": {\n "draw_priority": 140,\n "sub_priority": 600\n },\n "cruise_facility_layer": {\n "draw_priority": 140,\n "sub_priority": 800\n },\n "cruise_camera_layer": {\n "draw_priority": 140,\n "sub_priority": 900\n },\n "guide_camera_active_layer": {\n "draw_priority": 140,\n "sub_priority": 3780\n },\n "guide_camera_normal_layer": {\n "draw_priority": 140,\n "sub_priority": 3690\n },\n "guide_facility_layer": {\n "draw_priority": 140,\n "sub_priority": 3680\n },\n "guide_interval_camera_layer": {\n "draw_priority": 140,\n "sub_priority": 3790\n },\n "guide_traffic_event_layer": {\n "draw_priority": 140,\n "sub_priority": 3490\n },\n "guide_traffic_light_layer": {\n "draw_priority":140,\n "sub_priority":3770\n }\n },\n "route_control": {\n "route_start_point_layer": {\n "draw_priority": 140,\n "sub_priority": 3400\n },\n "route_end_point_layer": {\n "draw_priority": 140,\n "sub_priority": 3500\n },\n "route_via_point_layer": {\n "draw_priority": 140,\n "sub_priority": 3600\n },\n "route_compare_tip_layer": {\n "draw_priority": 140,\n "sub_priority": 2900\n },\n "route_path_layer": {\n "draw_priority": 100,\n "sub_priority": 1700\n },\n "route_jam_line_layer": {\n "draw_priority": 100,\n "sub_priority": 1600\n },\n "route_jam_point_layer": {\n "draw_priority": 140,\n "sub_priority": 2700\n },\n "route_forbidden_layer": {\n "draw_priority": 140,\n "sub_priority": 2600\n },\n "route_weather_layer": {\n "draw_priority": 140,\n "sub_priority": 3700\n },\n "route_via_road_layer": {\n "draw_priority": 140,\n "sub_priority": 3710\n },\n "route_arrow_layer": {\n "draw_priority": 140,\n "sub_priority": 1740\n },\n "route_avoid_limit_layer": {\n "draw_priority": 140,\n "sub_priority": 3050\n },\n "route_limit_facility_layer": {\n "draw_priority": 140,\n "sub_priority": 3080\n },\n "route_little_camera_layer": {\n "draw_priority": 140,\n "sub_priority": 1900\n },\n "route_traffic_light_layer": {\n "draw_priority": 140,\n "sub_priority": 2000\n },\n "route_traffic_block_layer": {\n "draw_priority": 140,\n "sub_priority": 3000\n },\n "route_traffic_block_outer_layer": {\n "draw_priority": 140,\n "sub_priority": 2800\n },\n "route_traffic_event_tip_layer": {\n "draw_priority": 140,\n "sub_priority": 2900\n },\n "route_energy_empty_point_layer": {\n "draw_priority": 140,\n "sub_priority": 3550\n },\n "route_odd_point_layer": {\n "draw_priority": 140,\n "sub_priority": 3580\n },\n "route_energy_remain_point_layer": {\n "draw_priority": 140,\n "sub_priority": 3800\n },\n "route_energy_key_point_layer": {\n "draw_priority": 140,\n "sub_priority": 3540\n },\n "guide_congestion_layer": {\n "draw_priority": 140,\n "sub_priority": 3710\n },\n "guide_label_layer": {\n "draw_priority": 140,\n "sub_priority": 3760\n },\n "guide_path_board_layer": {\n "draw_priority": 140,\n "sub_priority": 3700\n },\n "guide_eta_event_layer": {\n "draw_priority": 140,\n "sub_priority": 2100\n },\n "route_start_end_line_layer": {\n "draw_priority": 140,\n "sub_priority": 300\n },\n "route_start_end_point_layer": {\n "draw_priority": 140,\n "sub_priority": 3500\n },\n "route_eagle_start_point_layer": {\n "draw_priority": 140,\n "sub_priority": 3400\n },\n "route_eagle_end_point_layer": {\n "draw_priority": 140,\n "sub_priority": 3500\n },\n "route_eagle_via_point_layer": {\n "draw_priority": 140,\n "sub_priority": 3600\n },\n "route_eagle_path_layer": {\n "draw_priority": 100,\n "sub_priority": 1700\n },\n "route_rest_area_layer": {\n "draw_priority": 140,\n "sub_priority": 3520\n },\n "route_dodge_line_layer": {\n "draw_priority": 100,\n "sub_priority": 1725\n },\n "route_end_path_point_layer": {\n "draw_priority": 140,\n "sub_priority": 2590\n },\n "route_three_urgent_layer": {\n "draw_priority": 140,\n "sub_priority": 2590\n }\n },\n "search_control": {\n "search_point_beginend_layer": {\n "draw_priority": 140,\n "sub_priority": 2900\n },\n "search_point_exitentrance_layer": {\n "draw_priority": 140,\n "sub_priority": 1200\n },\n "search_point_centralpos_layer": {\n "draw_priority": 140,\n "sub_priority": 1200\n },\n "search_point_root_layer": {\n "draw_priority": 140,\n "sub_priority": 1300\n },\n "search_point_children_layer": {\n "draw_priority": 140,\n "sub_priority": 1300\n },\n "search_line_layer": {\n "draw_priority": 100,\n "sub_priority": 200\n },\n "search_polygon_layer": {\n "draw_priority": 100,\n "sub_priority": 200\n },\n "search_polyline_layer": {\n "draw_priority": 100,\n "sub_priority": 200\n },\n "search_along_route_layer": {\n "draw_priority": 140,\n "sub_priority": 3520\n },\n "search_park_route_layer": {\n "draw_priority": 140,\n "sub_priority": 3650\n },\n "search_charge_station_layer": {\n "draw_priority": 140,\n "sub_priority": 1300\n }\n },\n "user_control": {\n "user_gps_track_point_layer": {\n "draw_priority": 140,\n "sub_priority": 1100\n },\n "user_gps_track_line_layer": {\n "draw_priority": 140,\n "sub_priority": 1000\n },\n "user_send_to_car_layer": {\n "draw_priority": 140,\n "sub_priority": 0\n },\n "user_favorite_main_layer": {\n "draw_priority": 140,\n "sub_priority": 400\n },\n "user_favorite_poi_layer": {\n "draw_priority": 140,\n "sub_priority": 400\n },\n "user_rainbow_line_layer": {\n "draw_priority": 140,\n "sub_priority": 1000\n }\n }\n },\n "collision_combination": {\n "guide_congestion_collision": {\n "area_collision": [\n\t\t\t\t "guide_congestion_layer"\n\t\t\t ],\n "collision_layer": [\n "guide_camera_active_layer",\n "guide_interval_camera_layer",\n "guide_traffic_light_layer",\n "guide_congestion_layer"\n ]\t\n },\n "guide_label_collision": {\n "area_collision": [\n \t"guide_label_layer"\n ],\n "collision_layer": [\n "guide_camera_active_layer" ,\n "guide_congestion_layer",\n "guide_path_board_layer",\n "guide_label_layer"\n ]\n },\n "search_collision": {\n "area_collision": [],\n "collision_layer": [\n "search_point_root_layer",\n "search_point_children_layer"\n ]\n },\n "end_area_collision": {\n "area_collision": [],\n "collision_layer": [\n "route_end_area_parent_layer",\n "route_end_area_child_layer"\n ],\n "collided_by_focus_item":1\n },\n "guide_collision": {\n "area_collision": [],\n "collision_layer": [\n "guide_interval_camera_layer",\n "guide_camera_active_layer",\n "guide_camera_normal_layer",\n "guide_traffic_light_layer",\n "guide_facility_layer",\n "guide_congestion_layer",\n "guide_label_layer",\n "guide_path_board_layer",\n "guide_mix_fork_layer"\n ],\n "not_collided_by_high_priority": [\n "guide_camera_normal_layer",\n "guide_congestion_layer",\n "guide_label_layer"\n ],\n "not_collide_low_priority": [\n ],\n "not_collide_each_other": {\n \t"guide_traffic_light_layer":"guide_camera_active_layer"\n }\n }\n\t }\t\n}\n
1,初始化时:需要先初始化主图服务后再初始化图层服务(图层服务依赖主图的MapView)
2,反初始化时:先反初始化图层服务后再反初始化主图服务(图层服务依赖主图的MapView)
","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-04-06 07:03:38","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":258,"collectCount":0,"estimateDate":44,"docStatus":0,"permissions":true,"overView":false}}