在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,而不同浏览器对定位权限的处理方式不同。

解决方案:

  1. 检查浏览器是否已授予定位权限
  2. 改用uni.getLocation获取当前位置坐标
  3. 添加错误处理逻辑:
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)
  }
})
回到顶部