在鸿蒙app中使用高德地图

一.在module,json5中申请所需权限

"requestPermissions": [
      {
        "name": "ohos.permission.APPROXIMATELY_LOCATION",
        "reason": "$string:Harmony_location_permission_reason",
        "usedScene": {
          "abilities": [
            "Harmony_location_demoAbility"
          ],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.LOCATION",
        "reason": "$string:Harmony_location_permission_reason",
        "usedScene": {
          "abilities": [
            "Harmony_location_demoAbility"
          ],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.LOCATION_IN_BACKGROUND",
        "reason": "$string:Harmony_location_permission_reason",
        "usedScene": {
          "abilities": [
            "Harmony_location_demoAbility"
          ],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.INTERNET",
        "reason": "$string:Harmony_location_permission_reason",
        "usedScene": {
          "abilities": [
            "Harmony_location_demoAbility"
          ],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.KEEP_BACKGROUND_RUNNING",
        "reason": "$string:Harmony_location_permission_reason",
        "usedScene": {
          "abilities": [
            "Harmony_location_demoAbility"
          ],
          "when": "always"
        }
      }
    ],

二.在页面中校验是否开启权限(获取当前位置)

 private array: Array<Permissions> = ['ohos.permission.APPROXIMATELY_LOCATION','ohos.permission.LOCATION'];
abilityAccessCtrl.createAtManager().requestPermissionsFromUser(this.context, this.array).then((res) => {
      for (let i = 0; i < res.permissions.length; i++) {
        if (res.permissions[i] === "ohos.permission.APPROXIMATELY_LOCATION"  && res.authResults[i] === 0) {
          // 请求当前位置  LOW_POWER 低功耗 精准度不高
          let requestInfo: geoLocationManager.CurrentLocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'timeoutMs': 10000};
          geoLocationManager.getCurrentLocation(requestInfo).then((result) => {
            // PreferencesUtils.saveStringData('location',JSON.stringify(result))
          })
        }
      }
    })

三.拿到app的appID去官网获取key

// 获取app的appid
let flag = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;
let bundleInfo = bundleManager.getBundleInfoForSelfSync(flag)
let appId = bundleInfo.signatureInfo.appId;

四.拿到的key传递用来获取地图

  MapsInitializer.setApiKey("你的key");
 initMap = () =>{
    //getInstance获取地图实例   registerMapViewCreatedCallback注册地图创建回调
    MapViewManager.getInstance().registerMapViewCreatedCallback((mapview?: MapView, mapViewName?: string) => {
      if (!mapview) {
        return;
      }
      let mapView = mapview;
      // 创建地图  地图生命周期方法,创建时调用,创建地图
      mapView.onCreate();
      // 异步获取地图操作实例AMap
      mapView.getMapAsync(async (map) => {
        // 这个map就是最终创建出来页面上显示的操作,对地图一系列操作都在这里进行
        let aMap: AMap = map;
        this.aMap = map
       
      })
    })
  }

五.在build中使用MapViewComponent组件

  MapViewComponent()
            .width('100%')
            .height('92%')

至此地图以及可以在页面上显示了

要在uniapp使用高德地图,需要安装并引入uniapp高德地图插件。以下是具体的步骤: 1. 在`manifest.json`文件声明使用高德地图插件,示例代码如下: ``` { "mp-weixin": { "plugins": { "myPlugin": { "version": "1.0.0", "provider": "wxfoo" } } }, "app-plus": { "plugins": { "myPlugin": { "version": "1.0.0", "provider": "foo" } } } } ``` 2. 安装高德地图插件,在终端输入以下命令: ``` npm install uniapp-amap --save ``` 3. 在需要使用高德地图的页面引入插件并初始化地图,示例代码如下: ``` <template> <view class="map-container"> <amap :id="mapId" :longitude="longitude" :latitude="latitude" :markers="markers" /> </view> </template> <script> import AMap from 'uniapp-amap' export default { data() { return { mapId: 'map', longitude: 116.397428, latitude: 39.90923, markers: [{ id: 1, longitude: 116.397428, latitude: 39.90923, iconPath: '/static/images/marker.png', width: 32, height: 32 }] } }, mounted() { AMap.initAMapApiLoader({ key: 'your amap key', plugin: ['AMap.Geolocation'] }) } } </script> ``` 其,`mapId`为地图组件的id,`longitude`和`latitude`为地图的心经纬度,`markers`为地图上的标记点,`initAMapApiLoader`方法用于初始化高德地图API,需要传入高德地图的开发者Key以及需要使用的插件列表。注意,需要将`your amap key`替换为自己的高德地图开发者Key。 以上是在uniapp使用高德地图的基本步骤,具体实现还需要根据自己的业务需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值