HarmonyOS 鸿蒙Next 地图多次调用addPolygon方法绘制多边形时会闪烁

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 地图多次调用addPolygon方法绘制多边形时会闪烁

鸿蒙地图for循环多次调用addPolygon方法绘制多边形时会闪烁,有什么优化方法? 调用方法: this.mapController?.addPolygon(polygonOptions);

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


@Entry
@Component
struct HuaweiMapDemo {
  private TAG = "HuaweiMapDemo";
  private mapOption?: mapCommon.MapOptions;
  private callback?: AsyncCallback<map.MapComponentController>;
  private mapController?: map.MapComponentController;

  aboutToAppear(): void {
    // 地图初始化参数,设置地图中心点坐标及层级
    this.mapOption = {
      position: {
        target: {
          latitude: 39.9,
          longitude: 116.4
        },
        zoom: 10
      }
    };

    // 地图初始化的回调
    this.callback = async (err, mapController) => {
      if (!err) {
        // 获取地图的控制器类,用来操作地图
        this.mapController = mapController;
        this.mapController.on("mapLoad", () => {
          console.info(this.TAG, `on-mapLoad`);
        });

        // 执行自定义的方法
        this.customizedMethod();
      }
    };
  }

  // 自定义的方法
  private customizedMethod() {
    // ...
  }

  build() {
    Column() {

      // 调用MapComponent组件初始化地图
      MapComponent({ mapOptions: this.mapOption, mapCallback: this.callback }).width('100%').height('80%');

      Button("绘制多边形").onClick(async ()=>{

        console.info("地图绘制")
        for (let i = 0; i < 437; i++) {

              // 多边形初始化参数
              let polygonOptions: mapCommon.MapPolygonOptions = {
                points: [{ latitude: i+10, longitude: 50 },
                      {latitude: i+20, longitude: 100 },
                       { latitude:i+30, longitude: 140 },
                     ],
                clickable: true,
                fillColor: 0x300086E3,
                geodesic: false,
                strokeColor: 0x300086E3,
                jointType: mapCommon.JointType.DEFAULT,
                strokeWidth: 0,
                visible: true,
                zIndex: 10
              }
              // 创建多边形

              await this.mapController?.addPolygon(polygonOptions);

        }

      })
    }.height('100%')
  }
}

也可以参考下这个示例:https://developer.huawei.com/consumer/cn/doc/architecture-guides/practice-tourist-park-app-architecture-v1-0000001965211653#section1521332143011

针对HarmonyOS 鸿蒙Next地图多次调用addPolygon方法绘制多边形时出现闪烁的问题,这可能是由于多次绘制多边形时地图组件的渲染机制导致的。以下是一些可能的解决方案:

  1. 优化多边形绘制逻辑:尽量避免在短时间内多次调用addPolygon方法,可以通过合并多边形顶点或使用其他数据结构来优化绘制逻辑,减少渲染次数。
  2. 调整地图组件性能:检查地图组件的性能设置,如缩放级别、加载策略等,确保地图在绘制多边形时能够流畅渲染。
  3. 更新系统和地图SDK:确保你的HarmonyOS系统和地图SDK均为最新版本,因为开发者可能已经在新版本中修复了此类性能问题。
  4. 资源清理:在多次调用addPolygon方法之前,可以尝试清理之前的多边形资源,避免资源累积导致的性能下降。

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

回到顶部