HarmonyOS 地图开发前准备

目前开发地图展示,在AGCl里创建了应用,开通了地图服务,拿到Client ID,请问目前除了地图API开发外,还需要准备其它流程吗?最好提供一份地图开发前需要准备的开发及接入流程

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

Map Kit开发准备可以参考文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/map-config-agc-V5

Map Kit会用到Location kit相关的准备可以参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/location-permission-guidelines-V5

下述一个使用的demo可供参考:

(在项目内使用地图组件,实现的效果:跳转到一个专门的页面,页面里只有一个地图组件,然后地图上显示我自己的当前地理位置)

先获取当前位置,在传入地图组件,使用地图组件需在module.json5中开启权限:

"requestPermissions": [
{
  "name": "ohos.permission.LOCATION",
"reason": "$string:EntryAbility_desc",
"usedScene": {
  "abilities": [
  "EntryAbility"
  ],
  "when": "always"
}
},
{
  "name": "ohos.permission.APPROXIMATELY_LOCATION",
"reason": "$string:EntryAbility_desc",
"usedScene": {
  "abilities": [
  "EntryAbility"
  ],
  "when": "always"
}
}
]
import { map, mapCommon, MapComponent } from '@kit.MapKit';
import { AsyncCallback } from '@kit.BasicServicesKit';
import { geoLocationManager } from '@kit.LocationKit';
import { router } from '@kit.ArkUI';

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

  aboutToAppear(): void {
    // 地图初始化的回调
    this.callback = async (err, mapController) => {
      if (!err) {
        // 获取地图的控制器类,用来操作地图
        this.mapController = mapController;
        // 启用我的位置图层
        this.mapController?.setMyLocationEnabled(true);
        this.mapController.on("mapLoad", () => {
          console.info('MapCreatePage', `on-mapLoad`);
        });

        // 监听“我的位置”按钮点击事件
        this.mapController.on("myLocationButtonClick", () => {
          console.info("myLocationButtonClick", `myLocationButtonClick`);
          this.getMyLocation()
        });

        // 初始化我的位置
        this.getMyLocation()
      }
    };
  }

  build() {
    Column() {
      Row() {
        Image($r('app.media.ic_public_arrow_left')).width(28)
          .onClick(() => {
            router.back()
          })
        Text('当前位置')
      }
      .height('6%')
      .width('100%')
      .padding({ left: 15 })

      MapComponent({ mapOptions: this.mapOption, mapCallback: this.callback }).width('100%').height('94%');
    }
  }
  // 获取当前位置并视图移动过去
  getMyLocation() {
    geoLocationManager.getCurrentLocation().then(async (result) => {
      console.log('MapSignIn', 'getMyLocation = ' + JSON.stringify(result))
      let position: geoLocationManager.Location = {
        "latitude": result.latitude,
        "longitude": result.longitude,
        "altitude": 0,
        "accuracy": 0,
        "speed": 0,
        "timeStamp": 0,
        "direction": 0,
        "timeSinceBoot": 0
      };

      this.mapController?.setMyLocation(position);
      // 创建CameraUpdate对象
      let gcj02Posion: mapCommon.LatLng = await this.convertCoordinate(result.latitude,result.longitude)
      let latLng: mapCommon.LatLng = {
        latitude: gcj02Posion.latitude,
        longitude: gcj02Posion.longitude
      };
      let zoom = 17;
      let cameraUpdate = map.newLatLng(latLng, zoom);
      // 以动画方式移动地图相机
      this.mapController?.animateCamera(cameraUpdate, 1000);
    })
  }

  async convertCoordinate(latitude: number, longitude: number): Promise<mapCommon.LatLng> {
    let wgs84Position: mapCommon.LatLng = {
      latitude: latitude,
      longitude: longitude
    };
    let gcj02Posion: mapCommon.LatLng = await map.convertCoordinate(mapCommon.CoordinateType.WGS84, mapCommon.CoordinateType.GCJ02, wgs84Position);

    return gcj02Posion;
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS 地图开发关联账号
51浏览 • 1回复 待解决
HarmonyOS 上架准备材料
307浏览 • 1回复 待解决
HarmonyOS 关闭窗口如何弹出提示?
201浏览 • 1回复 待解决
HarmonyOS APP上架测试验收
160浏览 • 1回复 待解决
HarmonyOS 上架内部测试方法
206浏览 • 1回复 待解决
关于APP上架相关准备工作清单的咨询
579浏览 • 1回复 待解决
PostgreSQL insert 判断是否存在?
4430浏览 • 2回复 待解决
HarmonyOS 显示不出地图
104浏览 • 1回复 待解决