HarmonyOS 鸿蒙Next 将坐标转换为地理描述 报错

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

HarmonyOS 鸿蒙Next 将坐标转换为地理描述 报错

Button(‘转化地理位置’)
.onClick(async () => {
console.log(‘进来’)
// console.log(‘simplt’, this.simplt)
try {
let reverseGeocodeRequest: geoLocationManager.ReverseGeoCodeRequest =
{ “latitude”: 31.12, “longitude”: 121.11, “maxItems”: 1 };
//转化坐标为具体的地址描述
let addressFromLocation = await geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest)
console.log(‘getAddressesFromLocation’,JSON.stringify(addressFromLocation))

}
<span class="hljs-keyword">catch</span>(err){
  <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">stringify</span>(err))
}

})

geoLocationManager.getAddressesFromLocation 将坐标转换为地理描述

报错“{code":3301300,“message”:“BussinessError 3301300: Reverse geocoding query failed.”}”


更多关于HarmonyOS 鸿蒙Next 将坐标转换为地理描述 报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
可以参考demo:
深色代码主题
复制
// xxx.ets
import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';
import { geoLocationManager } from '@kit.LocationKit';

@Entry @Component struct Index { @State localText: string = ‘当前位置’ permissions: Array<Permissions> = [‘ohos.permission.APPROXIMATELY_LOCATION’, ‘ohos.permission.LOCATION’];

getLocal() { const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager(); // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗 atManager.requestPermissionsFromUser(context, this.permissions).then((data) => { let grantStatus: Array<number> = data.authResults; let length: number = grantStatus.length; for (let i = 0; i < length; i++) { if (grantStatus[i] === 0) { // 用户授权,可以继续访问目标操作 const requestInfo: geoLocationManager.LocationRequest = { ‘priority’: geoLocationManager.LocationRequestPriority.FIRST_FIX, ‘scenario’: geoLocationManager.LocationRequestScenario.UNSET, ‘timeInterval’: 1, ‘distanceInterval’: 0, ‘maxAccuracy’: 0 }; geoLocationManager.getCurrentLocation(requestInfo) .then((location: geoLocationManager.Location) => { let reverseGeocodeRequest: geoLocationManager.ReverseGeoCodeRequest = location; try { geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest).then((data) => { console.log('getAddressesFromLocation: ’ + JSON.stringify(data)); this.localText = data[0].placeName + ‘’ }) .catch((error: number) => { console.error(‘promise, getAddressesFromLocation: error=’ + JSON.stringify(error)); }); } catch (err) { console.error(“errCode:”); } }) .catch((err: Error) => { console.error(Failed to get current location. Code is , message is <span class="hljs-subst">${err.message}</span>); }); } else { // 用户拒绝授权 return; } } // 授权成功 }).catch((err: Error) => { console.error(Failed to request permissions from user. Code is , message is <span class="hljs-subst">${err.message}</span>); }) }

build() { Column() { Button(this.localText).onClick(() => { this.getLocal(); }) } } }

更多关于HarmonyOS 鸿蒙Next 将坐标转换为地理描述 报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


试试这个呢

深色代码主题
复制
​
 @State num: Array<geoLocationManager.GeoAddress> = [] // 这个数据类型是接口给的,不需要自己定义

aboutToAppear() { let reverseGeocodeRequest: geoLocationManager.ReverseGeoCodeRequest = { “latitude”: 44.43288, “longitude”: 125.184742, “maxItems”: 2, “locale”: “zh” }; // 调用逆地理编码服务,将坐标转换为地理描述 geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest, (err, data) => { if (err) { console.info('getAddressesFromLocation err: ’ + JSON.stringify(err.name)); } if (data) { console.info(‘getAddressesFromLocation: data=’ + JSON.stringify(data)); // 把data中的数据遍历给num for (let entry of data) { this.num.push(entry) } } }); }

build() { Column() { Text(JSON.stringify(this.num)).fontColor(Color.Black).margin(16)

  <span class="hljs-comment">// 遍历num中的数据</span>
  <span class="hljs-title class_">ForEach</span>(<span class="hljs-variable language_">this</span>.<span class="hljs-property">num</span>, <span class="hljs-function">(<span class="hljs-params">item: geoLocationManager.GeoAddress</span>) =&gt;</span> {
    <span class="hljs-title class_">Column</span>() {
      <span class="hljs-title class_">Text</span>(<span class="hljs-string">`地区信息:<span class="hljs-subst">${<span class="hljs-string">'\n'</span>}</span><span class="hljs-subst">${item.placeName}</span>`</span>).<span class="hljs-title function_">fontSize</span>(<span class="hljs-number">13</span>)
      <span class="hljs-title class_">Text</span>(<span class="hljs-string">`路名信息:<span class="hljs-subst">${item.roadName}</span>`</span>).<span class="hljs-title function_">fontSize</span>(<span class="hljs-number">13</span>)
    }.<span class="hljs-title function_">width</span>(<span class="hljs-string">'100%'</span>).<span class="hljs-title function_">alignItems</span>(<span class="hljs-title class_">HorizontalAlign</span>.<span class="hljs-property">Start</span>).<span class="hljs-title function_">margin</span>({ <span class="hljs-attr">top</span>: <span class="hljs-number">30</span> })
  })
}.<span class="hljs-title function_">width</span>(<span class="hljs-string">'100%'</span>).<span class="hljs-title function_">height</span>(<span class="hljs-string">'100%'</span>)

}

在HarmonyOS鸿蒙Next系统中,将坐标转换为地理描述的功能通常依赖于系统的地理定位API。如果遇到报错,可能是由以下几个原因引起的:

  1. 权限未授予:确保应用已正确申请并获得了访问地理位置的权限。在鸿蒙系统中,这通常需要在config.json文件中声明所需权限,并在运行时请求用户授权。

  2. API使用错误:检查调用坐标转换API的方式是否正确,包括参数传递、回调设置等。确保使用的API版本与鸿蒙系统版本兼容。

  3. 数据格式问题:输入的坐标数据格式可能不符合API要求。确认输入的经纬度数据是否有效且格式正确(如WGS84标准)。

  4. 系统或环境问题:系统bug或特定设备环境可能导致功能异常。尝试在不同设备或模拟器上运行,以排除设备问题。

  5. 服务不可用:地理定位服务可能因网络问题、服务维护等原因暂时不可用。检查网络连接状态,并确认服务是否正常运行。

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

回到顶部