开发 AIoT 智能眼镜SDK 开发指南 屏显组件 屏显组件

眼镜端屏显组件 最后更新时间: 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_t

7、导航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;    //!< 设置图面是否显示路名,不建议变更此配置,变更后已缓存数据不会刷新

    ...
}
返回顶部 示例中心 常见问题 智能客服 公众号
二维码