HarmonyOS 鸿蒙Next Map kit上绘制多边形是否支持传一个顶点的经纬度 其他顶点传入相对的x y坐标

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

HarmonyOS 鸿蒙Next Map kit上绘制多边形是否支持传一个顶点的经纬度 其他顶点传入相对的x y坐标

Map kit 上绘制多边形是否支持传一个顶点的经纬度,其他顶点传入相对的x,y坐标

2 回复

在地图添加多边形,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/map-map-V5#section1825517119280, 绘制多边形只能支持传入经纬度,参考链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/map-common-V5#section1615694815308

由于多边形是根据经纬度绘制的,会随着经纬度的变化而变化,

可以参考如下demo:

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(()=>{

        // 初始化参数

        let polygonOptions: mapCommon.MapPolygonOptions = {

          // 多边形坐标点,必传

          points: [{ latitude: 39.9, longitude: 116.4 },

            {latitude: 40, longitude: 117 },

            { latitude: 42, longitude: 118 },

          ],

          clickable: true,

          geodesic: false,

          strokeColor: 0xff000000,

          jointType: mapCommon.JointType.DEFAULT,

          strokeWidth: 10,

          visible: true,

          zIndex: 10

        };

        this.mapController?.addPolygon(polygonOptions);

      })

    }.height('100%')

  }

}

更多关于HarmonyOS 鸿蒙Next Map kit上绘制多边形是否支持传一个顶点的经纬度 其他顶点传入相对的x y坐标的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统的Next Map Kit中,绘制多边形(Polygon)的功能通常要求所有顶点都使用相同的坐标系,即要么全部使用经纬度坐标(地理坐标系),要么全部使用相对或绝对的屏幕坐标(投影坐标系)。直接混合使用经纬度坐标和相对x、y坐标来定义多边形的顶点是不被支持的。

Next Map Kit的API设计通常要求所有顶点坐标一致,以确保地图渲染的准确性和一致性。如果需要绘制多边形,并且部分顶点位置是相对于某个已知点的偏移,你需要先将这个偏移转换为对应的经纬度坐标,或者如果所有顶点都可以接受屏幕坐标,那么需要先将所有经纬度转换为屏幕坐标。

这种转换通常涉及到地图的投影和地理坐标系的转换,可能需要使用到Map Kit提供的坐标转换工具或API。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。在那里,你可以获得更专业的技术支持和帮助,以解决在HarmonyOS鸿蒙Next Map Kit上遇到的具体问题。

回到顶部