HarmonyOS 鸿蒙Next MapComponent组件增加标记Marker,title显示效果不受控,有时显示,有时不显示,且setInfoWindowVisible方法设置无效

发布于 1周前 作者 itying888 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next MapComponent组件增加标记Marker,title显示效果不受控,有时显示,有时不显示,且setInfoWindowVisible方法设置无效

let markerOptions: mapCommon.MarkerOptions = {
position: {
latitude: 32.120750,
longitude: 118.788765
},
clickable: true,
// 设置信息窗标题
title: "自定义信息窗"
};
await this.mapController?.addMarker(markerOptions);

更多关于HarmonyOS 鸿蒙Next MapComponent组件增加标记Marker,title显示效果不受控,有时显示,有时不显示,且setInfoWindowVisible方法设置无效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

使用setTitle来设置信息窗的标题,下边demo title和setInfoWindowVisible都是有效的。

关于你的问题能否抽成demo,或者给出具体代码逻辑部分看看如何设置的

import { MapComponent, mapCommon, map } from '@kit.MapKit';
import { AsyncCallback } from '@kit.BasicServicesKit';

@Entry
@Component
struct MarkerDemo {
  private mapOptions?: mapCommon.MapOptions;
  private mapController?: map.MapComponentController;
  private callback?: AsyncCallback<map.MapComponentController>;
  private marker?: map.Marker;

  aboutToAppear(): void {
    // 地图初始化参数
    this.mapOptions = {
      position: {
        target: {
          latitude: 31.984410259206815,
          longitude: 118.76625379397866
        },
        zoom: 15
      }
    };
    this.callback = async (err, mapController) => {
      if (!err) {
        this.mapController = mapController;
        // Marker初始化参数
        let markerOptions: mapCommon.MarkerOptions = {
          position: {
            latitude: 31.984410259206815,
            longitude: 118.76625379397866
          },
          rotation: 0,
          visible: true,
          zIndex: 0,
          alpha: 1,
          anchorU: 0.5,
          anchorV: 1,
          clickable: true,
          draggable: true,
          flat: false
        };
        // 创建Marker
        this.marker = await this.mapController.addMarker(markerOptions);
        // 设置标记可拖拽
        this.marker.setDraggable(true);
        // 设置标记锚点
        this.marker.setMarkerAnchor(1.0, 1.0);
        // 设置信息窗的标题
        this.marker.setTitle('南京');
        // 设置信息窗的子标题
        this.marker.setSnippet('华东地区');
        // 设置信息窗的锚点位置
        this.marker.setInfoWindowAnchor(1, 1);
        // 设置信息窗可见
        this.marker.setInfoWindowVisible(true);
      }
    };
  }

  build() {
    Stack() {
      Column() {
        MapComponent({ mapOptions: this.mapOptions, mapCallback: this.callback });
      }.width('100%')
    }.height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next MapComponent组件增加标记Marker,title显示效果不受控,有时显示,有时不显示,且setInfoWindowVisible方法设置无效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,针对MapComponent组件增加标记Marker时,如果遇到title显示效果不受控的问题,通常与Marker的显示策略、布局更新以及视图刷新机制有关。

首先,确保Marker的创建和添加逻辑正确无误。在添加Marker后,检查MapComponent的视图是否已正确刷新。可以通过调用MapComponent的invalidate()方法来强制刷新视图,确保Marker及其title能够正确显示。

关于title有时显示有时不显示的问题,这可能与Marker的可见性设置或地图的缩放级别有关。确保在适当的缩放级别下Marker是可见的,并且其title的显示逻辑符合你的预期。

对于setInfoWindowVisible方法设置无效的情况,这可能是由于InfoWindow的显示策略被其他设置覆盖或冲突。检查代码中是否有其他对InfoWindow显示状态进行修改的调用,确保setInfoWindowVisible的调用是在正确的时机和上下文中进行。

此外,检查是否有其他UI元素或布局遮挡了Marker的title或InfoWindow,导致它们无法正常显示。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部