{"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根据配置信息建立各业务图层间的碰撞关系。

目前图层间碰撞逻辑默认按产品定义实现,并且是可配置的,默认碰撞规则如下:

图层

样例

碰撞规则

区间测速气泡

\"image.png\"









该类气泡为碰撞气泡,从上到下优先级依次降低。优先级高的碰撞掉优先级低的。


注:

1.电子眼小icon最多显示4个,可能会被其他小电子眼碰撞消失。优先级高的气泡直接压盖电子眼小icon,电子眼小icon碰撞掉优先级低的气泡

2.大电子眼之间为碰撞关系

3.小电子眼之间为碰撞关系

4.多路线气泡目前不参与碰撞,与其他气泡为压盖关系,压盖优先级从上到下依次降低

5.电子眼大气泡与红绿灯气泡为碰撞关系,二者的冲突逻辑处理详见底部备注

6.拥堵气泡不被碰撞消失,优先级高的气泡直接压盖拥堵气泡。拥堵气泡碰撞掉优先级低的气泡

电子眼大气泡

\"image.png\"

\"image.png\"

红绿灯气泡

\"image.png\"

多路线气泡

\"image.png\"

拥堵气泡

\"image.png\"

蓝色路牌气泡

\"image.png\"

电子眼小icon

\"image.png\"

道路设施标牌

\"image.png\"

分歧路口气泡

\"image.png\"

多象限图层

多象限图层包括以下图层,它们需要加入压盖面积的图层间碰撞或者图层开启压盖面积碰撞:

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控件参与碰撞

对于多象限图层(图层的图元有多个飘向):终点区域图层,多备选标签图层,拥堵气泡图层,支持UI控件参与碰撞,客户端通过接口com.autonavi.gbl.layer.BizControlService.setUICollisionRects把UI控件的区域信息传入,这几个业务图层就会和设置进来的区域进行碰撞,寻找最优显示的象限。

场景图

\"image.png\"\"image.png\"

备注:终点区域图层,父节点(清华大学)与子节点间的碰撞,以及子节点(出入口,停车场)内部图元间的碰撞,子节点(西门、西北门等)由于被父节点(清华大学)碰撞不显示。

核心接口

//初始化图层组合碰撞配置\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搜索

JSON配置

目前的业务图层碰撞关系的配置如下(这些信息存放在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}}