Marker

点标记

构造函数

  • 语法
const marker = new Marker(options: MarkerOptions)
  • 参数说明
参数名 类型 说明
options MarkerOptions 必填,点标记的参数对象

属性

名称 类型 说明
infoWindow InfoWindow | undefined 点标记的信息窗对象;默认undefined;1.5.0之后建议使用InfoWindowList
infoWindowList( 1.5.0版本新增) InfoWindow[] | undefined 点标记的信息窗对象列表;默认undefined;注意如果开发者通过操作该数组去删除InfoWindow,需要手动管理对应的UI组件,Marker不负责组件资源的释放

方法

方法名 返回值 说明
setOnClickListener(listener: ((event: OverlayEvent) => void) | undefined) void 设置点标记点击的回调函数,传入undefined代表移除监听
setTag(tag: ESObject)(2.0.0新增) void 设置自定义数据
getTag()(2.0.0新增) ESObject 获取所设置的自定义数据
showInfoWindow(componentId?: string) void 显示点标记的信息窗,参数componentId可选,若不传代表显示所有信息窗(包括后续增加的),若传入componentId代表显示对应组件id的信息窗;componentId为1.5.0版本增加
hideInfoWindow(componentId?: string) void 隐藏点标记的信息窗,参数componentId可选,若不传代表隐藏所有信息窗(包括后续增加的),若传入componentId代表隐藏对应组件id的信息窗;componentId为1.5.0版本增加
getInfoWindowVisible(componentId: string) ( 1.5.0版本增加) boolean 获取某个信息窗设置的显隐状态(注意,开启碰转后InfoWindow可能会被碰撞隐藏,与实际设置的显隐状态未必一致);
updateCollisionMainComponent(collisionMain: InfoWindow | undefined) (2.0.0版本增加) boolean 将某个InfoWindow或Marker图像,设置为Marker的碰撞主体;collisionMain代表要设置为主体的信息窗(必须挂在到该Marker上),若传入undefined则认为设置主体为原Marker图像;函数返回true代表变更主体成功,若InfoWindow与marker未关联返回false;若变更成功后,InfoWindow被删除,则移动主体会变更为icon,若icon不存在会使用一个虚拟主体
updateMoveAlongMainComponent(moveAlongMain: InfoWindow | undefined) (2.0.0版本增加) boolean 将某个InfoWindow或Marker图像,设置为MapController的moveAlong方法的响应主体;moveAlongMain代表要设置为主体的信息窗(必须挂在到该Marker上),若传入undefined则认为设置主体为原Marker图像;函数返回true代表变更主体成功,若InfoWindow与marker未关联返回false;若变更成功后,InfoWindow被删除,则移动主体会变更为icon,若icon不存在会使用一个虚拟主体
addInfoWindow(infoWindow: InfoWindow): void(2.3.0版本增加) void 添加一个信息窗到当前标记点。当mapOptions.infoWindowConfig.autoRefresh为false时,一定要使用此方法添加infoWindow,而不是直接使用marker.infoWindowList.push添加infoWindow,否则会显示异常或性能变差
removeInfoWindow(componentId: string)(2.3.0版本增加) boolean 从当前标记点移除指定的信息窗,componentId 为要移除的信息窗的组件ID,如果成功移除信息窗,返回true;否则返回false。当mapOptions.infoWindowConfig.autoRefresh为false时,一定要使用此方法移除infoWindow,而不是直接使用marker.infoWindowList.splice移除infoWindow,否则会显示异常或性能变差。

MarkerOptions对象规范

关于Marker图像,控制显示尺寸的方法:

  • 1.5.0以前版本利用图像原始尺寸和scale来控制显示大小;sdk统一按照2倍图来进行缩放,实际尺寸设置参考eg: 设计稿设计尺寸为’100vp’ x ‘100vp’,则应该准备’200px’ x ‘200px’ 的原始图片;若需要使用三倍图(‘300px’ x ‘300px’)来增强清晰图并达到’100vp’的大小效果,应配合scaleX、scaleY一起使用,300px / 2 * scale = 100vp ,则scale = 0.6666;
  • 1.5.0及后续版本支持设置width、height来控制图像显示尺寸;若不填按照默认算法展示

注意若覆盖物创建完成后,对MarkerOptions中属性的更新必须手动调用地图控制器中对应的更新方法才生效,否则图上覆盖物样式不会变更

名称 类型 说明
icon ImageEntity 可选;点标记图像实体对象,默认情况下图像作为Marker的碰撞和moveAlong主体;(2.0.0由必填改为可选)
anchorX number 可选;点标记图像锚点横轴方向与点标记经纬度的对应位置;以图像左上点为原点,向右为正,默认为0.5;单位为图像实际显示宽度(图像宽度乘以缩放比例)百分比
anchorY number 可选;点标记图像锚点纵轴方向与点标记经纬度的对应位置;以图像左上点为原点,向下为正,默认为0.5;单位为图像实际显示高度(图像高度乘以缩放比例)百分比
alpha number 可选;点标记图像透明度,范围0~1,默认为1
rotate number 可选;点标记图像的旋转角度,旋转原点为锚点位置,顺时针为正,范围0~360;默认为0
scaleX number 可选;点标记图像横轴方向的缩放倍数,缩放原点为锚点位置,默认为1
scaleY number 可选;点标记图像纵轴方向的缩放倍数,缩放原点为锚点位置,默认为1
level OverlayLevel 可选;设置点标记的图像在地图上的显示层级;默认为OverlayLevel.OverlayLevelAboveLabels在Poi之上; 相同Level内的显示层级关系通过zIndex来控制,zIndex越大越靠上显示。 level优先级高于zIndex
clickable boolean 可选;设置图像是否支持点击
position LatLng 必填;点标记的位置
width(1.5.0版本新增 number 可选;点标记主区域显示宽度,icon图像会自动适配该宽度;单位为屏幕像素;若不填或设置为非正数但有图像,则为图像原始宽度 * Display.scaledDensity / 2,否则为0;InfoWindow会相对该宽度进行定位;
height(1.5.0版本新增 number 可选;主区域显示高度,icon图像会自动适配该高度;单位为屏幕像素,若不填或设置为非正数但有图像,则为图像原始高度 * Display.scaledDensity / 2 ,否则为0;InfoWindow会相对该宽度进行定位;
visible boolean 可选;设置点标记是否可见
zIndex number 可选;设置点标记的显示顺序,默认为0
avoidAnnotation boolean 可选;控制点标记碰撞主体与地图poi有压盖时,是否隐藏poi,默认为false
avoidMarker (1.5.0版本新增 boolean 可选;控制点标记碰撞主体与跟其他marker的图像或者InfoWindow压盖后,隐藏zIndex低的;默认为false
collisionRelation(1.5.0版本新增 string 可选;设置点标记碰撞主体与信息窗等附件的碰撞关联关系;字符串’together’代表maker碰撞主体跟各附件作为整体去碰撞来进行显隐,忽略各信息窗附件的avoidAnnotation和avoidMarker属性全部采用MarkerOptions中的avoidAnnotation和avoidMarker属性设置;字符串’alone’代表marker碰撞与各个附件独立进行碰撞,非碰撞主体部件可独立设置avoidAnnotation和avoidMarker属性,非主体被碰撞隐藏不会影响marker碰撞主体,但marker碰撞主体被隐藏则各个信息窗附件都会被隐藏;默认为’together’
clusterGroupTag(2.1.0开始支持) string 可选;设置Marker点聚合的分组标记,标记相同的marker将一起参与聚合;默认为空代表不参与聚合,注意该属性必须与对应MarkerCluster中的groupTag保持一致;Marker参与点聚合后,则用户对Marker的visible操作不会生效

ImageEntity

图像实体对象

名称 类型 说明
uri string 必填;点标记图像的资源位置;类型为RawFile时,读取rawfile目录下的资源,类型为LocalFile时,读取文件系统下的资源; 1.5.0之前版本仅支持鸿蒙工程目录下的rawfile路径位置,eg: rawfile://BLUE.png;
type(1.5.0版本新增 ImageSourceType 可选;图像类型;默认值为RawFile

ImageSourceType

枚举类型;Marker图像资源的类型(1.5.0版本新增

枚举值 说明
RawFile 读取rawfile目录文件
LocalFile 读取本地文件系统
PixelMap(2.0.0版本新增 图片为PixelMap类型
Url(2.0.0版本新增 图片url

InfoWindow

点标记的信息窗对象;1.5.0之前信息窗默认位置位于点标记position对应屏幕位置上方, icon默认高度一半+InfoWindow对应组件高度一半处居中对齐;1.5.0之后支持设置Align定位 对InfoWindow中属性的更新,会在鸿蒙后续的帧渲染中尽快更新;

名称 类型 说明
componentId string 必填;鸿蒙组件对象的id
infoWindowInfo InfoWindowInfo 必填;必须声明为对应鸿蒙组件的state对象;可查看示例: https://lbs.qq.com/mobile/harmonyMapSDK/guide/overlay/marker/infoWindowMarker
offsetX number 可选;点标记的信息窗相对于自身默认位置横轴的偏移量,向右为正,默认为0,单位为物理像素
offsetY number 可选;点标记的信息窗相对于自身默认位置纵轴的偏移量,向下为正,默认为0,单位为物理像素
align(1.5.0版本新增 Align 可选;信息窗相对于marker图像的位置;默认为Top;
avoidAnnotation (1.5.0版本新增 boolean 可选;控制点标记InfoWindow与地图poi有压盖时,是否隐藏poi,默认为false;该属性只在对应MarkerOptions的collisionRelation为alone时生效;若不设置则与MarkerOptions的avoidAnnotation保持一致;若该InfoWindow被设置为碰撞主体,则应用MarkerOptions中的设置;
avoidMarker (1.5.0版本新增 boolean 可选;控制点标记InfoWindow与跟其他marker的图像或者InfoWindow压盖后,隐藏zIndex低的;默认为false;该属性只在对应MarkerOptions的collisionRelation为alone时生效;若不设置则与MarkerOptions的avoidMarker保持一致;若该InfoWindow被设置为碰撞主体,则应用MarkerOptions中的设置;
attributeUpdater (2.3.0版本新增 InfoWindowAttributeUpdater 可选;用于更新InfoWindow显示组件属性的属性更新器,用法可参考https://lbs.qq.com/mobile/harmonyMapSDK/guide/overlay/perf

InfoWindowInfo

只读对象;点标记信息窗的信息载体;用户只应该创建,传递给InfoWindow实例后,作为只读对象在InfoWindow关联的组件中使用;注意:该对象必须声明为鸿蒙组件的state形式,可参考 https://lbs.qq.com/mobile/harmonyMapSDK/guide/overlay/marker/infoWindowMarker;

属性 类型 说明
visible boolean 只读属性不可随意更改;信息窗是否可见
x number 只读属性不可随意更改;信息窗左上点横轴方向屏幕位置,单位为vp
y number 只读属性不可随意更改;信息窗左上点纵轴方向屏幕位置,单位为vp
rotate(2.0.0版本新增 number 只读属性不可随意更改;信息窗旋转角度,单位为度,顺时针为正
zIndex(2.0.0版本新增 number 只读属性不可随意更改;信息窗zIndex

Align

枚举类型;InfoWindow相对于Marker图像的位置( 1.5.0版本新增

枚举值 说明
Center 信息窗位中心点位于Marker经纬度对应屏幕位置
Top 信息窗中心点位于Marker经纬度对应屏幕位置上方“一半图像高度+一半信息窗高度”的位置
Bottom 信息窗中心点位于Marker经纬度对应屏幕位置下方“一半图像高度+一半信息窗高度”的位置
Left 信息窗中心点位于Marker经纬度对应屏幕位置左方“一半图像宽度+一半信息窗宽度”的位置
Right 信息窗中心点位于Marker经纬度对应屏幕位置右方“一半图像宽度+一半信息窗宽度”的位置

InfoWindowAttributeUpdater( 2.3.0版本新增

属性 类型 说明
updateVisible function sdk默认更新组件visibility属性,特殊需求下开发者可重写
updatePosition function sdk默认更新组件position属性,特殊需求下开发者可重写
updateRotate function sdk默认空实现,该方法在moveAlong接口场景下,infoWindow作为移动主体时,在行进过程中回调,开发者应该根据需要设置组件旋转角度
updateZIndex function sdk默认空实现,该方法在设置marker zIndex时会回调,开发者应该根据需要设置组件zIndex,用于实现InfoWindow组件间的遮盖关系

本页内容