uni-app uni.openLocation 导航不能定位起点

uni-app uni.openLocation 导航不能定位起点

示例代码:

uni.openLocation({  
    name,  
    latitude,  
    longitude,  
    success: function () {  
        console.log('success');  
    },  
    fail: function(err) {  
        console.log('openLocation',err)  
    }  
});

操作步骤:

  • 调用 uni.openLocation 跳转到地址查看页面,点击右下角箭头按钮

预期结果:

  • 在点击右下角导航按钮的时候,最多只提示一次,然后默认以当前位置为起点导航

实际结果:

  • 在点击右下角导航按钮的时候,会提醒两次次,导航的时候没办法使用当前位置为起点

bug描述:

uni-app 开发H5应用,用户需要查看景区位置并导航,但是在调用uni.openLocation的时候出现以下问题:

  1. 在点击导航按钮的时候会出现两次相同的提示框(可能离开微信,打开第三方应用)
  2. 在浏览器内导航的时候,没办法将当前定位设定为起点,必须选择一个默认的起点位置

Image Image

13 回复

只要你打开地图的时候,地图能显示正确的地点就能进行导航 否则是你打开地图的姿势不对


如果手机下载了腾讯地图APP就没问题,但是没有下载就会像我说的那样

你微信发个地点导航能成功么 他俩理论上是一样的啊

不一样的 微信里面的位置导航一定是APP导航,而这个是没有APP就使用浏览器内置导航,内置导航起点不是当前位置,而且必须选择一个默认弹出的地址选项

回复 http404: 那你能不能这样 就是 吧当前位置当成默认位置 传进去,能行么

回复 小枫叶: api没有参数可以传当前坐标的/(ㄒoㄒ)/~~

我怎么跟你的不一样 ,你能否发个可复现的demo看看

http://cs.maiqiyun.com/pages/changshou-lake/cshz/cshz-detail?key=bhd 点击导航就可以看到了,把手机的腾讯地图app卸载了

遇到同样的问题了,请问作者找到解决办法了吗?

提醒两次是微信内置浏览器在页面跳转时的提示,用其他浏览器打开就没这个问题了 必须选择我的开头的地址问题,后续会修复,感谢反馈,已加分

HBuilderX 3.6.7 已修复

在使用 uni.openLocation 进行导航时,如果无法定位起点,可能是由于以下原因导致的。你可以根据这些可能的原因进行排查和解决:

1. 未正确设置起点坐标

uni.openLocation 的起点坐标需要手动传入,如果你没有正确设置起点坐标,导航将无法定位起点。

uni.openLocation({
    latitude: 39.90469, // 起点的纬度
    longitude: 116.40717, // 起点的经度
    name: '起点名称', // 起点名称
    address: '起点地址', // 起点地址
    success: function (res) {
        console.log('打开地图成功');
    },
    fail: function (err) {
        console.log('打开地图失败', err);
    }
});

解决方案:确保你传入了正确的起点坐标(latitudelongitude)。

2. 起点坐标格式不正确

起点坐标的格式必须是有效的经纬度值。如果传入的坐标格式不正确,可能会导致无法定位起点。

解决方案:检查传入的 latitudelongitude 是否为有效的经纬度值。

3. 地图应用不支持起点设置

某些地图应用可能不支持在外部调用时设置起点坐标,导致无法定位起点。

解决方案:尝试使用不同的地图应用进行测试,或者检查你使用的地图应用是否支持设置起点。

4. 设备或系统问题

在某些设备或系统上,可能由于权限问题或系统限制,导致无法正确定位起点。

解决方案:确保应用已获取必要的地理位置权限,并在不同的设备上进行测试。

5. uni-app 版本问题

如果你使用的是较旧版本的 uni-app,可能存在一些已知的 bug 或限制。

解决方案:尝试更新 uni-app 到最新版本,并查看是否有相关的修复。

6. 使用 uni.getLocation 获取当前位置

如果你希望使用当前设备的位置作为起点,可以先使用 uni.getLocation 获取当前位置,然后再调用 uni.openLocation

uni.getLocation({
    type: 'wgs84',
    success: function (res) {
        uni.openLocation({
            latitude: res.latitude, // 使用获取到的纬度
            longitude: res.longitude, // 使用获取到的经度
            name: '当前位置', // 起点名称
            address: '当前位置', // 起点地址
            success: function (res) {
                console.log('打开地图成功');
            },
            fail: function (err) {
                console.log('打开地图失败', err);
            }
        });
    },
    fail: function (err) {
        console.log('获取位置失败', err);
    }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!