HarmonyOS 鸿蒙Next Location 库中 地理编码和逆地理编码一直失败

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Location 库中 地理编码和逆地理编码一直失败

模拟器:
  let isAvailable = geoLocationManager.isGeocoderAvailable();
isAvailable 一直是false ;

下面是Log日志:
  location {"latitude":40,"longitude":116,"altitude":43.5,"accuracy":0,"speed":0,"timeStamp":1717745545920,"direction":45,"timeSinceBoot":3701262130401,"additionSize":0,"additions":[]}
06-07 15:35:09.610   19479-19479  A0ff02/Yemiao_Ohos             com.three....yeemiao  E     逆地理编码失败:error code:3301300 error message: BussinessError 3301300: Reverse geocoding query failed.}, %{public}s
06-07 15:35:09.610   19479-19479  A0ff02/Yemiao_Ohos             com.three....yeemiao  E     调用地理编码服务,将地理描述转换为具体坐标失败error code:3301400 error message: BussinessError 3301400: Geocoding query failed.}, %{public}s


真机:华为mate60 bata版
报 3301300 错误




下面是代码;

import geoLocationManager from '@ohos.geoLocationManager';
import { Logger } from '@yeemiao/util';
import { BusinessError } from '@ohos.base';

class GeocoderHelper {
  // 地理编码转化:将地理描述转化为具体坐标。
  public geoLocationFromAddresses(address:string) {
    let geocodeRequest:geoLocationManager.GeoCodeRequest = {
      "description": "上海市浦东新区xx路xx号",
      "maxItems": 1 };
    try {
      geoLocationManager.getAddressesFromLocationName(geocodeRequest)
        .then((result) => {
          Logger.debug('getAddressesFromLocationName: ' + JSON.stringify(result));
        })
        .catch((error:BusinessError) => {
          Logger.error(`调用地理编码服务,将地理描述转换为具体坐标失败error code:${error.code} error message: ${error.message}}`)
        });
    } catch (err) {
      Logger.error(`调用地理编码服务,将地理描述转换为具体坐标失败error code:${err.code} error message: ${err.message}}`)
    }
  }


  // 逆地理编码转化能力:将坐标转化为地理描述。
  public geoAddressesFromLocation(latitude:number, longitude:number){
    if (!this.isGeocoderAvailable()) {
      // return
    }

    this.geoLocationFromAddresses('')

    let reverseGeocodeRequest:geoLocationManager.ReverseGeoCodeRequest = {
      'locale':'zh',
      "latitude": latitude,
      "longitude": longitude,
      "maxItems": 1
    };
    try {
      geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest, (err, data) => {
        if (err) {
          Logger.error(`逆地理编码失败:error code:${err.code} error message: ${err.message}}`)
        } else {
          Logger.debug('逆地理编码成功' + JSON.stringify(data))
        }
      });
    } catch (err) {
      Logger.error(`逆地理编码失败:error code:${err.code} error message: ${err.message}}`)
    }
  }

  // 查询geoCoder服务是否可用。
  public isGeocoderAvailable() : boolean {
    try {
      let isAvailable = geoLocationManager.isGeocoderAvailable();
      return isAvailable
    } catch (err) {
      Logger.error(`地理编码不可用:error code:${err.code} error message: ${err.message}}`)
      return false
    }
  }
}
export default new GeocoderHelper();

更多关于HarmonyOS 鸿蒙Next Location 库中 地理编码和逆地理编码一直失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
确认下网络是否可用,连接WiFi是否可用,尝试重新运行,逆地理编码这个功能是根据输入算输出,只是传到云端计算返回结果(类似RPC远程过程调用),有关参数与定位(模拟器无GPS接收机,只能虚拟定位)无关,可能为网络可用问题导致,可以看下真机调测是否出现相同问题。

模拟器暂不支持,建议使用真机调测,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-emulator-specification-0000001839876358-V5

更多关于HarmonyOS 鸿蒙Next Location 库中 地理编码和逆地理编码一直失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,Next Location库提供的地理编码(Geocoding)和逆地理编码(Reverse Geocoding)功能依赖于准确的定位服务和地理信息服务。若该功能一直失败,可能的原因包括:

  1. 定位权限未开启:确保应用已获取到必要的定位权限,包括精确位置信息和模糊位置信息。

  2. 网络问题:地理编码和逆地理编码依赖于网络请求,检查设备的网络连接状态,确保能够正常访问外部地理信息服务。

  3. API调用错误:检查API调用参数是否正确,如地址格式、经纬度坐标等,确保符合Next Location库的要求。

  4. 服务限制:某些地区或特定时间段内,地理信息服务可能受到限制或维护,导致请求失败。

  5. 系统或库版本问题:确认HarmonyOS系统版本及Next Location库是否为最新版本,旧版本可能存在已知问题。

针对上述问题,请逐一排查并尝试解决。若确认以上均无误而问题依旧存在,可能是由于系统内部错误或特定环境下的兼容性问题。此时,建议直接联系官网客服获取进一步的技术支持。

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

HarmonyOS 鸿蒙Next Location 库中 地理编码和逆地理编码一直失败的话真机调试试试

回到顶部