跳转至

ui_amap_view

ui_amap_view 模块提供高德地图视图组件,用于在UI中嵌入地图显示与交互。

Class Summary

OHOS::UIAMapView

地图渲染视图控件,将地图渲染接口与 GUI 视图框架结合,支持在画布上绘制点、线、多边形、矩形、位图、图片、文字及 SVG 等图元

  • 构造:无
  • 成员函数

    接口名称 功能简述
    BeginDraw 开始一帧地图绘制,设定绘制区域尺寸与视口范围
    CommitDraw 提交当前帧的全部绘制指令
    DrawPoints 按指定样式绘制一组点
    DrawPolyline 按指定描边样式绘制折线
    DrawPolygon 按指定填充与描边样式绘制多边形
    DrawRect 按指定填充与描边样式绘制旋转矩形
    DrawBitmap 在指定区域绘制位图
    DrawImage 在指定区域绘制图片
    DrawText 在指定中心位置绘制旋转文字
    MeasureText 测量指定文字在给定样式下的宽高尺寸
    DrawSvg 在指定区域绘制 SVG 图形
    Callback 任务回调入口,由 TaskManager 周期调用以驱动渲染任务
  • 使用包含头文件#include "components/ui_amap_view.h"

  • 声明头文件middleware/services/gui/uikit/proprietary/include/components/ui_amap_view.h
  • 公有运算符:无
  • 继承关系:UIViewGroup、IMapRender、Task
  • 嵌套类型:无
  • 模板形参:无

Functions

OHOS::UIAMapView

BeginDraw

void BeginDraw(int32_t width, int32_t height, Rect mapRect) override

功能说明

  • 核心用途:发起一帧地图绘制流程,设定地图渲染的宽度、高度限制与视口矩形区域
  • 设计目的:作为地图渲染管线的入口,建立绘制上下文,其他 Draw 系列接口基于此上下文执行绘制
  • 使用场景:地图数据更新后、视口范围变化时,在绘制任何图元之前调用

入参

名称 参数类型 详细说明 约束取值范围
width int32_t 地图渲染宽度限制,单位:像素 大于 0
height int32_t 地图渲染高度限制,单位:像素 大于 0
mapRect Rect 地图视口矩形区域,定义绘制区域的位置与范围 Rect 坐标有效

CommitDraw

void CommitDraw() override

功能说明

  • 核心用途:提交当前帧的全部绘制指令,将缓冲区内容刷新到显示层
  • 设计目的:标志一帧绘制流程结束,触发画布内容提交与资源回收
  • 使用场景:所有 Draw 系列接口调用完成后调用,与 BeginDraw 配对使用

DrawPoints

void DrawPoints(Point *points, uint32_t pointNum, PointStyle *style) override

功能说明

  • 核心用途:按指定点样式绘制一组离散点
  • 设计目的:提供地图上的兴趣点(POI)标注渲染能力
  • 使用场景:地图上标注关键位置、路径节点等点状图元

入参

名称 参数类型 详细说明 约束取值范围
points Point * 入参指针,指向待绘制点坐标数组 非 nullptr,数组长度不小于 pointNum
pointNum uint32_t 待绘制点的数量 大于 0
style PointStyle * 入参指针,指向点样式描述 非 nullptr

DrawPolyline

void DrawPolyline(Point *points, uint32_t pointNum, StrokeStyle *style) override

功能说明

  • 核心用途:按指定描边样式绘制折线
  • 设计目的:提供地图路径、路线等线状图元渲染能力
  • 使用场景:绘制导航路线、道路网络、边界线等折线图元

入参

名称 参数类型 详细说明 约束取值范围
points Point * 入参指针,指向折线拐点坐标数组 非 nullptr,数组长度不小于 pointNum
pointNum uint32_t 折线拐点数量 大于等于 2
style StrokeStyle * 入参指针,指向描边样式描述 非 nullptr

DrawPolygon

void DrawPolygon(Point *points, uint32_t pointNum, MapPaintStyle *style) override

功能说明

  • 核心用途:按指定填充与描边样式绘制多边形
  • 设计目的:提供地图区域填充、行政区划等面状图元渲染能力
  • 使用场景:绘制行政区划区域、地标区域、水域等多边形图元

入参

名称 参数类型 详细说明 约束取值范围
points Point * 入参指针,指向多边形顶点坐标数组 非 nullptr,数组长度不小于 pointNum
pointNum uint32_t 多边形顶点数量 大于等于 3
style MapPaintStyle * 入参指针,指向画笔样式描述(含填充色与描边样式) 非 nullptr

DrawRect

void DrawRect(Rect rect, MapPaintStyle *style, float angle) override

功能说明

  • 核心用途:按指定填充与描边样式绘制可旋转矩形
  • 设计目的:提供地图上矩形区域标注的渲染能力,支持绕中心旋转
  • 使用场景:绘制地图上的矩形标注框、建筑轮廓等

入参

名称 参数类型 详细说明 约束取值范围
rect Rect 矩形区域定义 Rect 坐标有效
style MapPaintStyle * 入参指针,指向画笔样式描述 非 nullptr
angle float 顺时针旋转角度,旋转中心为矩形中心 单位:度

DrawBitmap

void DrawBitmap(BitmapBufferInfo *buffer, Rect rect, float angle) override

功能说明

  • 核心用途:在指定区域绘制位图,支持旋转
  • 设计目的:提供地图上像素级位图渲染能力,用于渲染已解码的位图数据
  • 使用场景:渲染地图瓦片位图、图标位图等像素数据

入参

名称 参数类型 详细说明 约束取值范围
buffer BitmapBufferInfo * 入参指针,指向位图缓冲区信息描述 非 nullptr,buffer 成员非 nullptr
rect Rect 位图绘制区域 Rect 坐标有效
angle float 顺时针旋转角度,旋转中心为矩形中心 单位:度

DrawImage

void DrawImage(ImageBufferInfo *image, Rect rect, float angle) override

功能说明

  • 核心用途:在指定区域绘制图片,支持旋转
  • 设计目的:提供地图上图片渲染能力,支持 JPEG 等压缩格式的图片数据
  • 使用场景:渲染地图图标、标注图片等压缩格式图像

入参

名称 参数类型 详细说明 约束取值范围
image ImageBufferInfo * 入参指针,指向图片缓冲区信息描述 非 nullptr,uuid 须为有效标识
rect Rect 图片绘制区域 Rect 坐标有效
angle float 顺时针旋转角度,旋转中心为矩形中心 单位:度

DrawText

void DrawText(Point center, const char *text, TextStyle *style, float angle) override

功能说明

  • 核心用途:在指定中心位置绘制可旋转文字
  • 设计目的:提供地图上文字标注渲染能力,支持自定义字体、字号、颜色和旋转角度
  • 使用场景:绘制地图上的地名标注、路名标注、距离标注等文字图元

入参

名称 参数类型 详细说明 约束取值范围
center Point 文字绘制中心坐标,同时作为旋转中心 坐标有效
text const char * 入参只读指针,指向待绘制的文字内容 非 nullptr,以 '\0' 结尾
style TextStyle * 入参指针,指向文字样式描述 非 nullptr
angle float 顺时针旋转角度 单位:度

MeasureText

bool MeasureText(const char *text, TextStyle *style, int32_t *width, int32_t *height) override

功能说明

  • 核心用途:测量指定文字在给定样式下的宽高尺寸
  • 设计目的:为文字布局提供尺寸预计算能力,用于在绘制前确定文字占位区域
  • 使用场景:文字标注布局计算、自动换行判定、文字居中对齐计算

入参

名称 参数类型 详细说明 约束取值范围
text const char * 入参只读指针,指向待测量的文字内容 非 nullptr,以 '\0' 结尾
style TextStyle * 入参指针,指向文字样式描述 非 nullptr
width int32_t * 出参指针,由被调用方写入测量所得文字宽度 非 nullptr
height int32_t * 出参指针,由被调用方写入测量所得文字高度 非 nullptr

出参

名称 数据类型 输出说明
width int32_t * 出参指针,写入文字宽度值,单位:像素
height int32_t * 出参指针,写入文字高度值,单位:像素

返回值

  • 返回类型:bool

返回文字测量结果状态

返回值 触发场景
true(1) 文字测量成功
false(0) 文字测量失败

DrawSvg

void DrawSvg(SvgBufferInfo *svg, Rect rect, float angle) override

功能说明

  • 核心用途:在指定区域绘制 SVG 图形,支持旋转
  • 设计目的:提供地图上矢量图形渲染能力,支持序列化 SVG 数据
  • 使用场景:渲染地图矢量图标、复合矢量标注等 SVG 图形

入参

名称 参数类型 详细说明 约束取值范围
svg SvgBufferInfo * 入参指针,指向 SVG 缓冲区信息描述 非 nullptr,uuid 须为有效标识
rect Rect SVG 绘制区域 Rect 坐标有效
angle float 顺时针旋转角度,旋转中心为矩形中心 单位:度

Callback

void Callback() override

功能说明

  • 核心用途:任务回调入口,由 TaskManager 周期调用以驱动地图渲染任务
  • 设计目的:实现 Task 基类的纯虚回调接口,将地图渲染纳入 GUI 任务调度体系
  • 使用场景:TaskManager 在每个任务周期内自动调用,无需用户手动调用

Enumerations

IMapRender::PaintType

enum class PaintType {
    PAINT_TYPE_FILL_ONLY,
    PAINT_TYPE_FILL_AND_STROKE,
    PAINT_TYPE_STROKE_ONLY
};
枚举成员 取值 描述
PAINT_TYPE_FILL_ONLY 0 仅填充几何图形
PAINT_TYPE_FILL_AND_STROKE 1 填充几何图形并描边
PAINT_TYPE_STROKE_ONLY 2 仅描边

IMapRender::ImageType

enum class ImageType {
    IMG_TYPE_JPEG,
    IMG_TYPE_MAX
};
枚举成员 取值 描述
IMG_TYPE_JPEG 0 JPEG 格式图片
IMG_TYPE_MAX 1 无效格式边界值

IMapRender::SvgType

enum class SvgType {
    SVG_TYPE_SERIALIZED,
    SVG_TYPE_MAX
};
枚举成员 取值 描述
SVG_TYPE_SERIALIZED 0 序列化的 SVG 文件
SVG_TYPE_MAX 1 无效格式边界值

Structures

IMapRender::TextStyle

typedef struct {
    const char* fontName;
    uint32_t fontSize;
    int16_t letterSpace;
    ColorType color;
} TextStyle;

成员说明

成员名称 数据类型 描述
fontName const char* 字库文件名
fontSize uint32_t 字体大小,单位:像素
letterSpace int16_t 字间距,单位:像素
color ColorType 字体颜色,ARGB 格式

IMapRender::PointStyle

typedef struct {
    uint32_t radius;
    ColorType color;
} PointStyle;

成员说明

成员名称 数据类型 描述
radius uint32_t 点半径,单位:像素
color ColorType 画笔颜色,ARGB 格式

IMapRender::StrokeStyle

typedef struct {
    uint32_t  strokeWidth;
    ColorType strokeColor;
    uint32_t dashCount;
    float *dashArray;
    int32_t dashOffset;
} StrokeStyle;

成员说明

成员名称 数据类型 描述
strokeWidth uint32_t 画笔宽度,单位:像素
strokeColor ColorType 画笔颜色,ARGB 格式
dashCount uint32_t 虚线模式数量
dashArray float * 虚线模式数组指针
dashOffset int32_t 虚线偏移量

IMapRender::MapPaintStyle

typedef struct {
    ColorType fillColor;
    StrokeStyle strokeStyle;
    Paint::PaintStyle paintType;
} MapPaintStyle;

成员说明

成员名称 数据类型 描述
fillColor ColorType 填充颜色,ARGB 格式
strokeStyle StrokeStyle 描边样式
paintType Paint::PaintStyle 填充样式类型

IMapRender::BitmapBufferInfo

typedef struct {
    ColorMode colorMode;
    uint8_t compressMode;
    uint8_t *buffer;
    uint32_t bufferSize;
    uint32_t width;
    uint32_t height;
    uint32_t stride;
    bool preMultiplied;
    char *uuid;
} BitmapBufferInfo;

成员说明

成员名称 数据类型 描述
colorMode ColorMode 位图格式
compressMode uint8_t 压缩格式
buffer uint8_t * 位图 buffer 内容,地址需考虑 GPU 对齐要求
bufferSize uint32_t 位图 buffer 大小
width uint32_t 位图宽度,单位:像素
height uint32_t 位图高度,单位:像素
stride uint32_t 位图每一行像素所占用的实际字节数,需考虑 GPU 对齐要求
preMultiplied bool 是否已经预乘 alpha 值,仅 ARGB8888 有效
uuid char * 图像唯一标识,大于 0 认为是有效标识,不强制要求有效标识

IMapRender::ImageBufferInfo

typedef struct {
    ImageType imageType;
    uint8_t *buffer;
    uint32_t bufferSize;
    char *uuid;
} ImageBufferInfo;

成员说明

成员名称 数据类型 描述
imageType ImageType 图像内容格式
buffer uint8_t * 图像 buffer 内容,地址需考虑 GPU 对齐要求
bufferSize uint32_t 图像 buffer 大小
uuid char * 图像唯一标识,大于 0 认为是有效标识,不支持无效标识

IMapRender::SvgBufferInfo

typedef struct {
    SvgType svgType;
    uint8_t *buffer;
    uint32_t bufferSize;
    char *uuid;
} SvgBufferInfo;

成员说明

成员名称 数据类型 描述
svgType SvgType SVG 内容格式
buffer uint8_t * SVG 文件内容
bufferSize uint32_t SVG 文件大小
uuid char * SVG 唯一标识,大于 0 认为是有效标识,不支持无效标识