HarmonyOS 鸿蒙Next 使用Location Kit获取到的位置和实际位置不准确
HarmonyOS 鸿蒙Next 使用Location Kit获取到的位置和实际位置不准确
使用Location Kit 获取到的位置和实际位置不准确
使用Location Kit 获取到的位置和实际位置不准确
使用Location Kit 获取到的位置和实际位置不准确
重要的事情说三遍。。。
可能是什么问题
更多关于HarmonyOS 鸿蒙Next 使用Location Kit获取到的位置和实际位置不准确的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
可以参考如下代码再试下:
//在EntryAbility.ets中申请权限
async applyPermissionFromUser() {
console.log(开始申请权限
)
const manager = abilityAccessCtrl.createAtManager()
await manager.requestPermissionsFromUser(this.context,
[“ohos.permission.LOCATION”, “ohos.permission.APPROXIMATELY_LOCATION”])
}
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(0x0000, ‘testTag’, ‘%{public}s’, ‘Ability onCreate’);
this.applyPermissionFromUser()
}
import { geoLocationManager } from ‘@kit.LocationKit’;
import { BusinessError } from ‘@kit.BasicServicesKit’;
import { map, mapCommon, site } from ‘@kit.MapKit’;
@Entry
@Component
struct Index {
@State beforeConvert: string = ‘’;
@State afterConvert: string = ‘’;
@State beforeConvertAddress: string = ‘’;
@State afterConvertAddress: string = ‘’;
aboutToAppear(): void {
this.getCurrentLocationInfo()
}
//获取设备所在的经纬度
getCurrentLocationInfo() {
let request: geoLocationManager.SingleLocationRequest = {
‘locatingPriority’: geoLocationManager.LocatingPriority.PRIORITY_ACCURACY,
‘locatingTimeoutMs’: 10000
}
try {
geoLocationManager.getCurrentLocation(request)
.then(async (result) => { // 调用getCurrentLocation获取当前设备位置,通过promise接收上报的位置
console.log('current location: ’ + JSON.stringify(result));
this.beforeConvert = “latitude:” + result.latitude + " longitude:" + result.longitude
let wgs84Position: mapCommon.LatLng = {
latitude: result.latitude,
longitude: result.longitude
};
let params: site.ReverseGeocodeParams = {
location: {
latitude: result.latitude,
longitude: result.longitude
},
language: “cn”,
radius: 200
};
const result2 = await site.reverseGeocode(params);
console.info(“wgs84Position Succeeded in reversing geocode:” + JSON.stringify(result2));
this.beforeConvertAddress = JSON.stringify(result2)
// this.getAddressInfo(result.latitude, result.longitude)
this.convertCoordinate(wgs84Position)
})
.catch((error: BusinessError) => { // 接收上报的错误码
console.error(‘promise, getCurrentLocation: error=’ + JSON.stringify(error));
});
} catch (err) {
console.error(“errCode:” + JSON.stringify(err));
}
}
//转换坐标系
async convertCoordinate(wgs84Position: mapCommon.LatLng) {
let gcj02Position: mapCommon.LatLng =
map.convertCoordinateSync(mapCommon.CoordinateType.WGS84, mapCommon.CoordinateType.GCJ02, wgs84Position);
console.log(gcj02Position:<span class="hljs-subst">${<span class="hljs-built_in">JSON</span>.stringify(gcj02Position)}</span>
)
this.afterConvert = “latitude:” + gcj02Position.latitude + " longitude:" + gcj02Position.longitude
if (gcj02Position) {
let params: site.ReverseGeocodeParams = {
location: {
latitude: gcj02Position.latitude,
longitude: gcj02Position.longitude
},
language: “cn”,
radius: 200
};
const result2 = await site.reverseGeocode(params);
console.info(“gcj02Position Succeeded in reversing geocode:” + JSON.stringify(result2));
this.afterConvertAddress = JSON.stringify(result2)
}
}
build() {
Column({ space: 10 }) {
if (this.beforeConvertAddress.length) {
Text(转化坐标系前经纬度:<span class="hljs-subst">${<span class="hljs-variable language_">this</span>.beforeConvert}</span>
).borderWidth(1)
Text(转化坐标系后经纬度:<span class="hljs-subst">${<span class="hljs-variable language_">this</span>.afterConvert}</span>
).borderWidth(1)
Text(转化坐标系前位置信息:<span class="hljs-subst">${<span class="hljs-variable language_">this</span>.beforeConvertAddress}</span>
).borderWidth(1)
Text(转化坐标系后位置信息:<span class="hljs-subst">${<span class="hljs-variable language_">this</span>.afterConvertAddress}</span>
).borderWidth(1)
} else {
Text(正在加载中
)
}
}
.width(‘100%’)
.height(‘100%’)
.justifyContent(FlexAlign.Center)
}
}
更多关于HarmonyOS 鸿蒙Next 使用Location Kit获取到的位置和实际位置不准确的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
Location Kit 获取到的坐标系是 wgs84,你可能需要转换坐标系。
或者你通过Location Kit 获取到的是模糊坐标,不是精确位置。
HarmonyOS 鸿蒙Next 使用Location Kit获取到的位置和实际位置不准确的问题可能源于多个方面,包括但不限于以下几点:
-
定位权限设置:确认应用已正确获取并启用了定位权限,包括GPS、网络定位等。
-
定位模式选择:检查是否选择了合适的定位模式,如高精度模式、低功耗模式等,不同模式对定位精度有影响。
-
环境因素:定位精度受环境因素影响,如建筑物密集区、地下室、隧道等环境可能导致定位不准确。
-
设备状态:设备状态如电量低、网络状况差、GPS信号弱等也可能影响定位精度。
-
定位服务配置:检查Location Kit的配置参数,如定位间隔、请求优先级等,确保配置合理。
-
版本兼容性:确认使用的HarmonyOS版本与Location Kit SDK版本兼容,版本不匹配可能导致功能异常。
-
定位算法:Location Kit可能采用多种算法融合定位,算法的选择和参数设置也会影响定位精度。
针对上述问题,建议逐一排查并优化。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。