在uni-app的h5端调用uni.chooseLocation未返回坐标信息
在uni-app的h5端调用uni.chooseLocation未返回坐标信息
示例代码:
onMapTap(e){
var that = this
uni.chooseLocation({
success(res) {
if(res.latitude && res.longitude){
that.formData.location[0] = res.latitude
that.formData.location[1] = res.longitude
}
console.log(res)
},
fail(e){
console.log('err')
console.log(e)
}
})
}
操作步骤:
- 封装函数调用
预期结果:
{
"errMsg": "chooseLocation:ok",
latitude:xx.xx,
longitude:xx.xx
}
实际结果:
{
"errMsg": "chooseLocation:ok"
}
bug描述:
在h5端调用uni.chooseLocation,success被成功执行但未返回坐标信息
{
"errMsg": "chooseLocation:ok"
}
信息类别 | 详情 |
---|---|
产品分类 | uniapp/H5 |
PC开发环境 | Windows |
PC开发环境版本 | Windows 10 专业版 22h2 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 3.8.7 |
浏览器平台 | Chrome |
浏览器版本 | 118.0.5993.71 |
项目创建方式 | HBuilderX |
更多关于在uni-app的h5端调用uni.chooseLocation未返回坐标信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
H5 端 使用地图和定位相关,需要在 manifest.json 内配置腾讯或谷歌等三方地图服务商申请的秘钥(key),需要使用https
更多关于在uni-app的h5端调用uni.chooseLocation未返回坐标信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html
秘钥已经配置过了(腾讯),HTTPS也已启用。
这是一个已知的uni-app H5端问题。uni.chooseLocation在H5端确实存在不返回坐标信息的情况,这是因为H5端使用的是浏览器原生定位API,而不同浏览器对定位权限的处理方式不同。
解决方案:
- 检查浏览器是否已授予定位权限
- 改用uni.getLocation获取当前位置坐标
- 添加错误处理逻辑:
uni.chooseLocation({
success(res) {
if(!res.latitude || !res.longitude) {
uni.getLocation({
type: 'gcj02',
success(loc) {
res.latitude = loc.latitude
res.longitude = loc.longitude
// 处理坐标
}
})
}
},
fail(err) {
console.error(err)
}
})