uni-app中uni.openLocation开发的h5页面腾讯地图导航问题

uni-app中uni.openLocation开发的h5页面腾讯地图导航问题

| 开发环境         | 版本号 | 项目创建方式 |
|------------------|--------|--------------|
| Windows          | w10    | HBuilderX    |

# 操作步骤:
随意新建调用下uni.openLocation就好了 h5!!!!!!

# 预期结果:
1. 能设置导航也标题
2. 导航从当前定位开始导航
3. 点击导航按钮可以导航

# 实际结果:


## bug描述:
1. uni.openLocation打开腾讯地图后顶部导航栏标题无法设置
2. 打开地图后点击左下角导航后,出现莫名其妙地址(并且不能关闭,必须选择),不是从当前定位位置开始导航
3. 选择导航后,规划路线后,点击底部导航按钮无反应
8 回复

给个demo看眼


就是使用官方的api,测试h5,随便写个都行。uni.openLocation 随意来个地理位置都行

uni.openLocation({ latitude: 35.26396, longitude: 117.96801, success: function() { console.log(‘success’); } }); 地图key:KXQBZ-C3M6W-UUNRF-OKK42-GLSA5-2SFPH

还有什么问题?

目前使用的就这些功能

HBuilderX 3.6.7 已修复

uni-app 中使用 uni.openLocation 打开地图进行导航时,如果是在 H5 环境下,可能会遇到一些兼容性问题,尤其是在使用腾讯地图时。以下是可能遇到的问题及解决方案:

1. 腾讯地图无法正常打开

  • 问题描述:在 H5 页面中调用 uni.openLocation 时,腾讯地图可能无法正常打开,或者页面跳转失败。
  • 解决方案
    • 确保 uni.openLocation 的参数正确传递,尤其是 latitudelongitude
    • 检查腾讯地图的 URL Scheme 是否正确。uni.openLocation 在 H5 环境下会调用系统的地图应用,如果使用的是腾讯地图,可能需要手动拼接 URL Scheme。
    • 如果腾讯地图无法正常打开,可以尝试使用其他地图服务(如高德地图或百度地图)。

2. 腾讯地图无法导航

  • 问题描述:腾讯地图打开后,无法正常进行导航。
  • 解决方案
    • 确保 uni.openLocation 的参数中包含了 nameaddress 信息,这些信息可以帮助地图应用更好地定位和导航。
    • 如果腾讯地图无法导航,可以尝试使用 uni.navigateTo 或其他方式跳转到腾讯地图的网页版进行导航。

3. H5 环境下地图服务不可用

  • 问题描述:在 H5 环境下,某些地图服务可能不可用,或者用户设备上没有安装相应的地图应用。
  • 解决方案
    • 在 H5 环境下,uni.openLocation 的行为依赖于设备的浏览器和系统环境。如果用户设备上没有安装腾讯地图应用,uni.openLocation 可能无法正常打开腾讯地图。
    • 可以提供一个备选方案,比如跳转到腾讯地图的网页版,或者使用其他地图服务。

4. 使用腾讯地图的备选方案

  • 解决方案
    • 如果 uni.openLocation 无法满足需求,可以手动拼接腾讯地图的 URL Scheme 或网页版 URL,使用 window.location.href 进行跳转。
    • 腾讯地图的 URL Scheme 示例:
      const url = `https://uri.amap.com/navigation?to=${latitude},${longitude},${name}&mode=car&src=yourAppName`;
      window.location.href = url;
    • 如果是网页版,可以使用:
      const url = `https://apis.map.qq.com/uri/v1/routeplan?type=drive&from=&to=${latitude},${longitude}&referer=yourAppKey`;
      window.location.href = url;

5. 跨平台兼容性问题

  • 问题描述:在 H5 和 App 环境下,uni.openLocation 的行为可能不同,导致地图无法正常打开或导航。
  • 解决方案
    • uni-app 中,可以通过条件编译来处理不同平台的兼容性问题。例如:
      // #ifdef H5
      // H5 环境下的处理逻辑
      const url = `https://apis.map.qq.com/uri/v1/routeplan?type=drive&from=&to=${latitude},${longitude}&referer=yourAppKey`;
      window.location.href = url;
      // #endif
      
      // #ifdef APP-PLUS
      // App 环境下的处理逻辑
      uni.openLocation({
          latitude: latitude,
          longitude: longitude,
          name: name,
          address: address
      });
      // #endif
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!