uni-app H5端调用uni.chooseLocation选择地址后无回调,腾讯和高德地图配置均无效

uni-app H5端调用uni.chooseLocation选择地址后无回调,腾讯和高德地图配置均无效

开发环境 版本号 项目创建方式
Windows WIN11 HBuilderX

操作步骤:

在H5端调用uni.chooseLocation选择地址后没有任何回调,打开界面可以选择地址,但是选择后不走回调

预期结果:

正常回调

实际结果:

在H5端调用uni.chooseLocation选择地址后没有任何回调,打开界面可以选择地址,但是选择后不走回调

bug描述:

在H5端调用uni.chooseLocation选择地址后没有任何回调,打开界面可以选择地址,但是选择后不走回调


更多关于uni-app H5端调用uni.chooseLocation选择地址后无回调,腾讯和高德地图配置均无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

排查方法:可以在网络中,看一下哪个接口请求失败导致的,找到请求失败的接口,可以去地图厂商中查看问题原因。可能是没有配额或者是厂商的次数用尽

更多关于uni-app H5端调用uni.chooseLocation选择地址后无回调,腾讯和高德地图配置均无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


本地测试没有问题,真机打开有问题,不区分浏览器

我也碰到了相同的问题,浏览器的控制台-网络中也没有发现接口请求失败的记录

在uni-app中,如果你在H5端调用uni.chooseLocation选择地址后发现没有回调,这通常是由于H5环境下该API的限制或者配置不正确导致的。尽管uni-app提供了对地图服务(如腾讯地图和高德地图)的集成,但在H5端上这些服务可能无法直接工作,因为它们依赖于原生组件和权限。

以下是一些可能的解决方案和代码示例,帮助你排查和解决问题。不过请注意,由于H5环境的限制,最终可能无法实现与小程序或App端完全相同的功能。

1. 确认地图服务配置

首先,确保你已经在manifest.json中正确配置了地图服务(如腾讯地图或高德地图)的SDK密钥。以下是一个配置腾讯地图的示例:

{
  "mp-weixin": { // 小程序配置示例,H5不需要此配置
    "setting": {
      "urlCheck": false
    },
    "usingComponents": true,
    "permission": {
      "scope.userLocation": {
        "desc": "你的位置信息将用于小程序位置接口的效果展示"
      }
    }
  },
  "sdkConfigs": {
    "qqmap": { // 腾讯地图配置
      "key": "YOUR_TENCENT_MAP_KEY"
    }
  }
}

注意:H5端实际上不依赖这些配置,因为H5通常使用浏览器提供的地理定位API。

2. 使用浏览器地理定位API作为备选方案

由于uni.chooseLocation在H5端可能不可用,你可以考虑使用浏览器的地理定位API作为备选方案。以下是一个简单的示例,展示如何在H5端获取用户位置:

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(
    position => {
      const { latitude, longitude } = position.coords;
      console.log(`Latitude: ${latitude}, Longitude: ${longitude}`);
      // 你可以在这里处理获取到的位置信息
    },
    error => {
      switch(error.code) {
        case error.PERMISSION_DENIED:
          console.error("用户拒绝请求地理定位。");
          break;
        case error.POSITION_UNAVAILABLE:
          console.error("位置信息不可用。");
          break;
        case error.TIMEOUT:
          console.error("请求用户地理位置超时。");
          break;
        case error.UNKNOWN_ERROR:
          console.error("发生未知错误。");
          break;
      }
    }
  );
} else {
  console.error("浏览器不支持地理定位。");
}

结论

由于uni.chooseLocation在H5端的限制,你可能需要寻找其他方法来获取用户位置。上面的浏览器地理定位API是一个可行的备选方案,尽管它提供的功能不如uni.chooseLocation丰富。如果你的应用依赖于更复杂的地图功能,考虑引导用户到小程序或App端进行体验。

回到顶部