{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671516368293,"data":{"id":71713032,"title":"6.4.1.3业务图层间碰撞","slug":"gpvauo","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
业务图层间碰撞是业务图层与业务图层之间的碰撞,碰撞规则是可配置的。客户端需要调用BizControlService.initCollisionConfig,传入包含配置信息的配置文件,AutoSDK根据配置信息建立各业务图层间的碰撞关系。
目前图层间碰撞逻辑默认按产品定义实现,并且是可配置的,默认碰撞规则如下:
图层 | 样例 | 碰撞规则 |
区间测速气泡 | 该类气泡为碰撞气泡,从上到下优先级依次降低。优先级高的碰撞掉优先级低的。 注: 1.电子眼小icon最多显示4个,可能会被其他小电子眼碰撞消失。优先级高的气泡直接压盖电子眼小icon,电子眼小icon碰撞掉优先级低的气泡 2.大电子眼之间为碰撞关系 3.小电子眼之间为碰撞关系 4.多路线气泡目前不参与碰撞,与其他气泡为压盖关系,压盖优先级从上到下依次降低 5.电子眼大气泡与红绿灯气泡为碰撞关系,二者的冲突逻辑处理详见底部备注 6.拥堵气泡不被碰撞消失,优先级高的气泡直接压盖拥堵气泡。拥堵气泡碰撞掉优先级低的气泡 | |
电子眼大气泡 | ||
红绿灯气泡 | ||
多路线气泡 | ||
拥堵气泡 | ||
蓝色路牌气泡 | ||
电子眼小icon | ||
道路设施标牌 | ||
分歧路口气泡 |
多象限图层包括以下图层,它们需要加入压盖面积的图层间碰撞或者图层开启压盖面积碰撞:
1)巡航拥堵图层
2)导航电子眼激活态图层
3)导航拥堵图层
4)导航熟路图层
5)区间测速电子眼图层
6)红绿灯图层
7)拥堵气泡图层
8)室内停车场图层
9)沿途搜气泡图层
10)多备选图层
11)个人熟悉路线图层
业务图层间碰撞配置解析:
collision_combination:碰撞规则根节点名称,里面可以创建任意个碰撞组合,名字自定义,不能重名;每个碰撞组合中包含"area_collision","collision_layer"
area_collision:列举多象限图层,表示当前碰撞组合是用于计算这些图层与“collision_layer”中其它图层的压盖面积,同时不能使用"not_collided_by_high_priority", "not_collide_low_priority", "not_collide_each_other";如果“area_collision”没有列举图层,表示当前碰撞组合是用于图层间碰撞,而不是用于计算压盖面积;
collision_layer:
如果“area_collision”内容不为空,则表示用于计算图层内各图元的图元压盖面积的图层;
如果“area_collision”内容为空,则表示这些图层被加入到当前碰撞组合中,相互之间根据碰撞规则和优先级进行碰撞;
“collision_layer”中配置的图层,其效果是:1)将图层内所有图元加入到碰撞系统,图层是否加入取决于代码。
“area_collision”中配置的图层,其效果是:1)将图层加入到碰撞系统;2)将图层内所有图元加入到碰撞系统;3)开启图层面积碰撞。
只有图层本身加入到碰撞系统,同时图层内所有图元也加入到碰撞系统,碰撞才会生效。
collided_by_focus_item:用于设置两个图层间,处在焦点态的图层图元是否碰撞掉优先级高于自己的图层图元;(终点区域图层有该场景需求)
not_collided_by_high_priority:列举的图层,在当前碰撞组合中,不被高于自己优先级的图层碰撞掉;
not_collide_low_priority:列举的图层,在当前碰撞组合中,不碰撞掉低于自己优先级的图层;
not_collide_each_other:列举的图层,在当前碰撞组合中,相互之间不碰撞;(key:value写上图层名,不分前后)
对于多象限图层(图层的图元有多个飘向):终点区域图层,多备选标签图层,拥堵气泡图层,支持UI控件参与碰撞,客户端通过接口com.autonavi.gbl.layer.BizControlService.setUICollisionRects把UI控件的区域信息传入,这几个业务图层就会和设置进来的区域进行碰撞,寻找最优显示的象限。
备注:终点区域图层,父节点(清华大学)与子节点间的碰撞,以及子节点(出入口,停车场)内部图元间的碰撞,子节点(西门、西北门等)由于被父节点(清华大学)碰撞不显示。
//初始化图层组合碰撞配置\nboolean com.autonavi.gbl.layer.BizControlService.initCollisionConfig(MapView mapView, String strJsonFilename)\n \n//设置UI控件矩形框用于多象限点图元(PointLayerItemEx)的碰撞压盖面积计算,避免被UI控件遮挡。\nvoid com.autonavi.gbl.layer.BizControlService.setUICollisionRects(MapView pMapView, ArrayList< RectDouble > collisionRectUIs )
说明:函数详情,请复制函数名称到在线API搜索
目前的业务图层碰撞关系的配置如下(这些信息存放在style_bl.json中,和"virtual_bus"、"layer_priority"同一个文件):
"collision_combination": {\n "route_path_tmc_collision": {\n "area_collision": [\n "route_path_tmc_point_layer"\n ],\n "collision_layer": [\n "route_path_tmc_point_layer",\n "route_start_point_layer",\n "route_end_point_layer",\n "route_via_point_layer",\n "route_end_area_parent_layer",\n "route_via_eta_layer",\n "route_weather_layer",\n "route_rest_area_layer",\n "route_via_road_layer",\n "search_along_route_layer"\n ]\n },\n "guide_label_collision": {\n "area_collision": [\n\t\t\t "guide_label_layer"\n\t\t\t ],\n "collision_layer": [\n "guide_path_board_layer",\n "guide_camera_active_layer",\n "guide_interval_camera_layer",\n "guide_traffic_light_layer",\n "guide_congestion_layer",\n "guide_label_layer",\n "guide_facility_layer",\n "route_end_area_parent_layer",\n "search_park_route_layer"\n\t\t\t ]\n },\n\t\t"search_collision": {\n "area_collision": [],\n\t\t\t "collision_layer": [\n\t\t\t\t "search_point_root_layer",\n\t\t\t\t "search_point_children_layer"\n\t\t\t ]\n },\n\t\t"end_area_collision": {\n "area_collision": [],\n\t\t\t "collision_layer": [\n\t\t\t\t "route_end_area_parent_layer",\n\t\t\t\t "route_end_area_child_layer"\n\t\t\t ],\n\t\t\t "collided_by_focus_item":1\n },\n "via_eta_collision": {\n\t\t\t "collision_layer": [\n "route_end_area_parent_layer",\n "route_via_eta_layer"\n\t\t\t ]\n },\n\t\t"guide_collision": {\n "area_collision": [],\n\t\t\t "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\t\t\t ],\n\t\t\t "not_collided_by_high_priority": [\n "guide_interval_camera_layer",\n "guide_camera_active_layer",\n "guide_camera_normal_layer",\n "guide_congestion_layer",\n "route_end_area_parent_layer",\n "search_park_route_layer"\n\t\t\t ],\n\t\t\t "not_collide_low_priority": [\n\t\t\t ],\n\t\t\t "not_collide_each_other": {\n\t\t\t\t "guide_traffic_light_layer":"guide_camera_active_layer"\n\t\t\t }\n },\n "along_route_collision": {\n "area_collision": [\n "search_along_route_pop_layer"\n ],\n "collision_layer": [\n "search_along_route_layer",\n "search_along_route_pop_layer"\n ]\n },\n "cruise_congestion_collision": {\n "area_collision": [\n\t\t\t\t "cruise_congestion_prompt_layer"\n\t\t\t ],\n\t\t\t "collision_layer": [\n "cruise_facility_layer",\n "cruise_congestion_prompt_layer",\n "cruise_camera_layer"\n\t\t\t ]\n },\n "guide_camera_collision": {\n "area_collision": [\n "guide_camera_active_layer",\n "guide_interval_camera_layer",\n "guide_traffic_light_layer",\n "guide_congestion_layer"\n\t\t\t ],\n\t\t\t "collision_layer": [\n "guide_camera_active_layer",\n "guide_interval_camera_layer",\n "guide_traffic_light_layer",\n "guide_congestion_layer",\n "guide_label_layer",\n "guide_camera_normal_layer",\n "guide_facility_layer",\n "route_end_area_parent_layer",\n "search_park_route_layer"\n\t\t\t ]\n }\n}
1、碰撞只支持点图元的图层,线、多边形、扇形、箭头、路口大图等图层不能添加到碰撞系统中。
2、服务区图层,天气图层,途径路图层不能加入碰撞,因为它们有自己的碰撞规则。
","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-04-06 07:04:02","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":125,"collectCount":0,"estimateDate":14,"docStatus":0,"permissions":true,"overView":false}}