1 个回答

从5.0.0(12)版本开始,marker的icon属性支持image.PixelMap和Resource类型的。

您可以自己绘制好需要的样式,以图片的格式作为marker的icon传进来

您这边可以自定义一个builder函数,通过componentSnapshot把builder函数转成pixelmap。

详细信息和示例请参考如下地址:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-arkui-componentsnapshot-V5\#componentsnapshotcreatefrombuilder

比如:

addMarker() {
  componentSnapshot.createFromBuilder(()=>{this.RandomBuilder()},
    async (error: Error, pixmap: image.PixelMap) => {
      if(error){
        console.log("error: " + JSON.stringify(error))
        return;
      }

      let markerOptions1: mapCommon.MarkerOptions = {
        position: {
          latitude: 32.5,
          longitude: 119.9
        },
        icon:pixmap
      };
      await this.mapController?.addMarker(markerOptions1);
    })
}


@Builder
RandomBuilder() {
  Row(){
    Image($r('app.media.startIcon')).padding(5).width(25).height(25)
    Column() {
      Text('Test12').padding(5).fontColor(Color.White)
      Text('12公里').padding(5).fontColor(Color.White)
    }
  }
  .id("builder")
  .backgroundColor(Color.Green)
  .borderRadius(15)
}
logo
HarmonyOS
子站问答
访问
宣传栏