点标记
构造函数
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,否则会显示异常或性能变差。 |
关于Marker图像,控制显示尺寸的方法:
注意若覆盖物创建完成后,对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操作不会生效 |
图像实体对象
| 名称 | 类型 | 说明 |
|---|---|---|
| uri | string | 必填;点标记图像的资源位置;类型为RawFile时,读取rawfile目录下的资源,类型为LocalFile时,读取文件系统下的资源; 1.5.0之前版本仅支持鸿蒙工程目录下的rawfile路径位置,eg: rawfile://BLUE.png; |
| type(1.5.0版本新增) | ImageSourceType | 可选;图像类型;默认值为RawFile |
枚举类型;Marker图像资源的类型(1.5.0版本新增)
| 枚举值 | 说明 |
|---|---|
| RawFile | 读取rawfile目录文件 |
| LocalFile | 读取本地文件系统 |
| PixelMap(2.0.0版本新增) | 图片为PixelMap类型 |
| Url(2.0.0版本新增) | 图片url |
点标记的信息窗对象;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 |
只读对象;点标记信息窗的信息载体;用户只应该创建,传递给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 |
枚举类型;InfoWindow相对于Marker图像的位置( 1.5.0版本新增)
| 枚举值 | 说明 |
|---|---|
| Center | 信息窗位中心点位于Marker经纬度对应屏幕位置 |
| Top | 信息窗中心点位于Marker经纬度对应屏幕位置上方“一半图像高度+一半信息窗高度”的位置 |
| Bottom | 信息窗中心点位于Marker经纬度对应屏幕位置下方“一半图像高度+一半信息窗高度”的位置 |
| Left | 信息窗中心点位于Marker经纬度对应屏幕位置左方“一半图像宽度+一半信息窗宽度”的位置 |
| Right | 信息窗中心点位于Marker经纬度对应屏幕位置右方“一半图像宽度+一半信息窗宽度”的位置 |
| 属性 | 类型 | 说明 |
|---|---|---|
| updateVisible | function | sdk默认更新组件visibility属性,特殊需求下开发者可重写 |
| updatePosition | function | sdk默认更新组件position属性,特殊需求下开发者可重写 |
| updateRotate | function | sdk默认空实现,该方法在moveAlong接口场景下,infoWindow作为移动主体时,在行进过程中回调,开发者应该根据需要设置组件旋转角度 |
| updateZIndex | function | sdk默认空实现,该方法在设置marker zIndex时会回调,开发者应该根据需要设置组件zIndex,用于实现InfoWindow组件间的遮盖关系 |
有帮助
没帮助