HarmonyOS 鸿蒙Next:经纬度坐标和具体地址获取地理编码错误处理,具体地址获取地理编码报3301300错误与经纬度坐标报3301400错误

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

HarmonyOS 鸿蒙Next:经纬度坐标和具体地址获取地理编码错误处理,具体地址获取地理编码报3301300错误与经纬度坐标报3301400错误

不知道大家有没有遇到相关的问题?我是在电脑上开设备模拟器调试的,不知道是不是这个原因,下面是我的代码

import { geoLocationManager } from '@kit.LocationKit';
import { Permissions } from '@kit.AbilityKit';
import { AuthUtil } from '../Util/AuthUtil';

@Entry
@Component
struct Loaction_Page2 {
  locationPermissions: Permissions = 'ohos.permission.LOCATION'
  locationMatelyPermissions: Permissions = 'ohos.permission.APPROXIMATELY_LOCATION'

  async aboutToAppear(): Promise<void> {
    let permissionResult = await this.CheckPermission();
    if (!permissionResult) {
      //这里需要指引用户二次开启
      return;
    }
    this.CheckGeoService()
  }

  LocationToAddress() {
    this.CheckGeoService()
    let reverseGeocodeRequest: geoLocationManager.ReverseGeoCodeRequest =
      {
        "locale": "zh",
        "country": "CN",
        "latitude": 40.02099028,
        "longitude": 115.96965089,
        "maxItems": 1
      };
    try {
      geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest, (err, data) => {
        if (err) {
          console.log('getAddressesFromLocation err: ' + JSON.stringify(err));
        } else {
          console.log('getAddressesFromLocation data: ' + JSON.stringify(data));
        }
      });
    } catch (err) {
      console.error("errCode:" + JSON.stringify(err));
    }

  }

  LocationNameToAddress() {
    let geocodeRequest: geoLocationManager.GeoCodeRequest = {
      "description": "广东省广州市海珠区阅江西路222号(广州塔站B出口170米左右)",
      "maxItems": 1
    };
    try {
      geoLocationManager.getAddressesFromLocationName(geocodeRequest, (err, data) => {
        if (err) {
          console.log('getAddressesFromLocationName err: ' + JSON.stringify(err));
        } else {
          console.log('getAddressesFromLocationName data: ' + JSON.stringify(data));
        }
      });
    } catch (err) {
      console.error("errCode:" + JSON.stringify(err));
    }
  }

  build() {
    Column() {
      Button("具体地址得到地理编码").width(220).height(50)
        .margin({ bottom: 40 })
        .onClick(() => {
          this.LocationNameToAddress();
        })
      Button("具体坐标得到地理编码").width(220).height(50)
        .margin({ bottom: 40 })
        .onClick(() => {
          this.LocationToAddress();
        })
    }
    .height('100%')
    .width('100%')
    .justifyContent(FlexAlign.Center)
  }

  /**
   * 查询地理编码和逆地理编码是否可用
   */
  private CheckGeoService(): boolean {
    try {
      let isAvailable = geoLocationManager.isGeocoderAvailable();
      if (isAvailable) {
        console.log("地理编码和逆地理编码可用")
        return true;
      } else {
        console.log("地理编码和逆地理编码不可用")
        return false;
      }
    } catch (err) {
      console.error("errCode:" + JSON.stringify(err));
      return false;
    }
  }

  /**
   * 检查定位权限是否添加
   * @returns true为已经添加,false为未添加
   */
  private async CheckPermission(): Promise<boolean> {
    let result: boolean = true;
    let locationPermissionCheck = await AuthUtil.checkPermissions(this.locationPermissions)
    if (!locationPermissionCheck) {
      AuthUtil.reqPermissionsFromUser(this.locationPermissions, (index: number) => {
        if (index === -1) {
          result = false;
        }
      })
    }
    if (!result) {
      return result;
    }
    let locationMatelyPermissionCheck = await AuthUtil.checkPermissions(this.locationMatelyPermissions)
    if (!locationMatelyPermissionCheck) {
      AuthUtil.reqPermissionsFromUser(this.locationMatelyPermissions, (index: number) => {
        if (index === -1) {
          result = false;
        }
      })
    }
    return result;
  }
}

更多关于HarmonyOS 鸿蒙Next:经纬度坐标和具体地址获取地理编码错误处理,具体地址获取地理编码报3301300错误与经纬度坐标报3301400错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

windows模拟器好像只支持获取地址数据,不支持编码和逆编码

更多关于HarmonyOS 鸿蒙Next:经纬度坐标和具体地址获取地理编码错误处理,具体地址获取地理编码报3301300错误与经纬度坐标报3301400错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


应该是的了,现在没有实体机子去测试,后面试试看是不是这个问题。

针对HarmonyOS鸿蒙Next系统中,经纬度坐标和具体地址获取地理编码时遇到的3301300和3301400错误,这里提供可能的解决方案:

  1. 3301300错误:通常表示地址解析失败。请检查输入的具体地址信息是否完整、准确,避免存在拼写错误或格式不正确的问题。同时,确认所使用的地理编码服务API是否支持该地区的地址解析。

  2. 3301400错误:这个错误码一般关联于经纬度坐标解析问题。请验证输入的经纬度坐标是否在有效范围内(经度:-180至180度,纬度:-90至90度)。此外,确认API服务是否覆盖该坐标所在的地理位置,以及是否存在网络或权限问题导致服务调用失败。

  3. 通用检查

    • 确保应用已获得必要的地理位置权限。
    • 检查网络连接状态,确保API请求能够正常发送和接收。
    • 查阅鸿蒙系统的开发者文档,了解地理编码API的最新使用说明和限制条件。

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

回到顶部