眼镜端屏显组件 最后更新时间: 2026年05月27日
1、初始化导航和导航组件
导航相关的接口和定义在下面的头文件中:
awk_navi.h
awk_navi_defines.h
初始化导航及导航组件
- (void)initNavi
{
[self startTimer];
awk_navi_config_t navi_config;
memset(&navi_config, 0, sizeof(awk_navi_config_t)); // 务必先memset
// 内存相关适配
navi_config.memory_adapter.mem_malloc = awk_mem_malloc_adapter;
navi_config.memory_adapter.mem_free = awk_mem_free_adapter;
navi_config.memory_adapter.mem_calloc = awk_mem_calloc_adapter;
navi_config.memory_adapter.mem_realloc = awk_mem_realloc_adapter;
// 大内存优化
navi_config.fast_memory_adapter.mem_malloc = awk_fast_mem_malloc_adapter;
navi_config.fast_memory_adapter.mem_free = awk_fast_mem_free_adapter;
awk_init_navi(&navi_config);
// 添加数据回调监听..只添加了一部分
data_callback = (awk_navi_data_callback_t *)malloc(sizeof(awk_navi_data_callback_t));
memset(data_callback, 0, sizeof(awk_navi_data_callback_t));
data_callback->update_navi_info = update_navi_info;
data_callback->update_navi_location = update_navi_location;
data_callback->update_navi_route_group = update_route_group;
awk_navi_add_data_callback(data_callback);
// 添加事件回调监听..只添加了一部分
event_callback = (awk_navi_event_callback_t *)malloc(sizeof(awk_navi_event_callback_t));
memset(event_callback, 0, sizeof(awk_navi_event_callback_t));
event_callback->did_start_navi = did_start_navi;
event_callback->on_arrived_destination = on_arrived_destination;
event_callback->update_highlight_route = update_highlight_route;
event_callback->show_map = show_map;
event_callback->update_show_mode = update_show_mode;
event_callback->update_is_navigation = update_is_navigation;
awk_navi_add_event_callback(event_callback);
awk_navi_view_config_t config;
memset(&config, 0, sizeof(awk_navi_view_config_t)); // 务必先memset
config.should_autorotate_car = true;
config.tracking_mode = AWK_NAVI_TRACKING_MODE_CAR_NORTH;
config.show_mode = AWK_NAVI_SHOW_MODE_CAR_POSITION_LOCKED;
config.start_point_overlay = [self getStartPointOverlay:_mapId];
config.end_point_overlay = [self getEndPointOverlay:_mapId];
config.way_point_icon = [self getWayPointMarker];
config.overlay_marker_priority = 1000;
config.show_ui_elements = true;
config.show_grey_after_pass = true;
config.car_overlay = [self getCarOverlay:_mapId];
config.main_line_overlay = [self getMainLineOverlay:_mapId];
config.back_line_overlay = [self getBackLineOverlay:_mapId];
AMapRenderAdapter *navidapter = new AMapRenderAdapter();
s_navi_adapter = navidapter;
config.view_callback.update_remain_distance = update_remain_distance;
config.view_callback.update_remain_time = update_remain_time;
config.view_callback.update_traffic_bar = update_traffic_bar;
config.view_callback.update_navi_info_card = update_turn_info_card;
config.view_callback.update_speed_info = update_speed_info;
config.view_callback.update_north_up = update_north_up;
config.view_callback.update_rear_vehicle = update_rear_vehicle_info;
config.view_callback.update_traffic_signal = update_traffic_light_info;
config.view_callback.update_lane = update_lane_info;
config.view_callback.update_traffic_light_num = update_traffic_light_num;
config.measure_text = awk_measure_text_adapter;
config.rear_appr_vehicle_tips.label.padding.left = 4;
config.remain_distance.unit_label.padding.left = 2;
config.remain_time.big_unit_label.padding.left = 2;
config.remain_time.small_time_label.padding.left = 2;
config.remain_time.small_unit_label.padding.left = 2;
config.turn_info_card.distance_label.padding.left = 4;
config.turn_info_card.turn_label.padding.left = 4;
config.turn_info_card.unit_label.padding.left = 2;
config.turn_info_card.road_label.padding.left = 2;
config.turn_info_card.unit_label.padding.top = -1.0;
config.traffic_signal_tips.icon_label.label.padding.left = 4;
config.traffic_signal_tips.count_down_label.padding.left = 6;
config.traffic_signal_tips.unit_label.padding.left = 2;
config.north_up.label.padding.top = 5;
config.traffic_light.label.padding.left = 8;
int32_t res = awk_init_navi_view((uint32_t)_mapId, &config);
}2、设置导航数据
注意:只有持续设置数据,导航相关的接口才会持续不断的对外进行回到,驱动上层业务进行绘制导航信息
awk_navi_data(const uint8_t *data, size_t len)3、设置锁车态默认显示小地图
awk_navi_set_locked_overlay_type(AWK_NAVI_LOCKED_OVERLAY_MAP);4、锁车态(小地图)和全览态切换
//切换到锁车态
awk_navi_set_show_mode(AWK_NAVI_SHOW_MODE_CAR_POSITION_LOCKED);
//切换到全览
awk_navi_set_show_mode(AWK_NAVI_SHOW_MODE_OVERVIEW);5、车头朝上和正北朝上切换
//切换为正北朝上
awk_navi_set_tracking_mode(AWK_NAVI_TRACKING_MODE_MAP_NORTH);
//切换为车头朝上
awk_navi_set_tracking_mode(AWK_NAVI_TRACKING_MODE_CAR_NORTH);6、监听回调
导航相关的回调共有三部分,导航数据回调、导航事件回调、导航UI绘制内容回调,请按需实现回调方法
//导航数据回调
awk_navi_data_callback_t
//导航事件回调
awk_navi_event_callback_t
//导航UI内容回调
awk_navi_view_callback_t7、导航HUD组件
组件包括:转向信息卡片、地图、脉速表、剩余距离、剩余时间、光柱图、后方来车、红绿灯倒计时、车道线、北向上。部分组件仅展示在锁车态,部分组件仅展示在全览态。
实现监听回调后,根据awk_navi_view_callback_t的回调在上层进行UI的绘制。
可通过awk_navi_set_show_mode(AWK_NAVI_SHOW_MODE_OVERVIEW)将页面切换到全览态,切换到全览态前,根据自身设备显示地图的大小,向地图设置view_port,根据地图的回调,在屏幕上绘制对应大小的地图。
8、隐藏POI和路名
隐藏POI和路名可节约内存及网络请求内容的大小
在初始化地图时给awk_context_t设置poi_labels_hidden和road_labels_hidden。需要注意,不建议变更此配置,变更后已缓存数据不会刷新。
/**
* @brief 上下文
*/
typedef struct _awk_context_t
{
...
bool poi_labels_hidden; //!< 设置图面是否显示poi,不建议变更此配置,变更后已缓存数据不会刷新
bool road_labels_hidden; //!< 设置图面是否显示路名,不建议变更此配置,变更后已缓存数据不会刷新
...
}
