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
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| PAINT_TYPE_FILL_ONLY | 0 | 仅填充几何图形 |
| PAINT_TYPE_FILL_AND_STROKE | 1 | 填充几何图形并描边 |
| PAINT_TYPE_STROKE_ONLY | 2 | 仅描边 |
IMapRender::ImageType
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| IMG_TYPE_JPEG | 0 | JPEG 格式图片 |
| IMG_TYPE_MAX | 1 | 无效格式边界值 |
IMapRender::SvgType
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| 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
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| 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 认为是有效标识,不支持无效标识 |