uni-app中uni.getLocation在h5平台始终返回当前行政区的区政府定位

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app中uni.getLocation在h5平台始终返回当前行政区的区政府定位

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

操作步骤:

uni.getLocation({
type: 'gcj02',
isHighAccuracy:true,
success: (res) => {
console.log(res, 'getLocation');
},
fail: (err) => {
console.log(err, 'er--')
}
});

预期结果:

返回正确的经纬度

实际结果:

返回的是当前行政区区政府的定位

bug描述:

已经在manifest.json 中配置 腾讯地图key
uni.getLocation一直返回当前行政区 区政府的经纬度


11 回复

不使用uni.getLocation呢,试试这里的解决方法200087


ip定位只能到市级。我需要获取到用户当前具体的经纬度

回复 8***@qq.com: 用这个就能拿到具体位置啊。。。我都是用的这个

回复 靐齉齾麤龖龗: 腾讯地图的ip定位吗?

回复 8***@qq.com: 对啊

回复 靐齉齾麤龖龗: 高德地图的ip定位才只能定位到市,而且是给你的一个区域坐标集。。。想用还要开通高级定位。。。直接转腾讯的了

回复 靐齉齾麤龖龗: 我看他文档写着IP定位服务精确到市级,该位置为IP地址所属的行政区划政府坐标 我调用了一下不是精准的啊。。

回复 8***@qq.com: 那不知道了,也许我就是在政府附近吧。我定位偏差不了多少

回复 靐齉齾麤龖龗: 日。要部署到https环境里才正常 本地永远是错的

回复 8***@qq.com: 哈哈哈,学到了

在uni-app中,uni.getLocation 方法用于获取设备的当前地理位置。然而,在H5平台上,由于浏览器的安全限制和隐私政策,uni.getLocation 通常会依赖于HTML5的Geolocation API,该API提供的位置信息可能并不总是精确到具体的点,而是可能会返回较为宽泛的地理位置,如当前行政区的区政府所在地。

为了应对这种情况,我们可以结合一些其他方法或策略来优化位置信息的准确性,尽管无法完全控制浏览器返回的具体位置。以下是一个示例代码,展示了如何在uni-app的H5平台上使用uni.getLocation,并处理可能的误差:

// 引入uni-app的API
const uni = window.uni || {};

// 尝试获取位置信息
uni.getLocation({
    type: 'gcj02', // 坐标系类型,默认为 wgs84
    success: function (res) {
        // 成功获取位置信息
        console.log('成功获取位置:', res);
        // 可以在这里处理位置信息,如显示到地图上
        const latitude = res.latitude;
        const longitude = res.longitude;
        // 示例:使用这些信息更新地图中心点
        // mapInstance.setCenter({ latitude, longitude });
    },
    fail: function (err) {
        // 获取位置信息失败
        console.error('获取位置失败:', err);
        // 可以在这里处理失败情况,如提示用户检查权限或网络状态
    },
    complete: function () {
        // 请求完成(无论成功或失败)
        console.log('位置请求完成');
    }
});

// 额外处理:如果用户位置不准确,可以引导用户手动选择位置
function promptUserSelectLocation() {
    // 这里可以使用一些UI组件(如uni-ui的picker)让用户手动选择城市或位置
    // 或者引导用户打开浏览器的定位权限
    uni.showModal({
        title: '位置不准确',
        content: '您的位置信息可能不准确,是否尝试手动选择位置?',
        success: function (res) {
            if (res.confirm) {
                // 用户点击确认,可以打开地图选择页面或引导用户开启定位权限
                // 例如:uni.navigateTo({ url: '/pages/map/map' });
            } else if (res.cancel) {
                console.log('用户取消选择位置');
            }
        }
    });
}

// 在fail回调中调用
// fail: function (err) {
//     promptUserSelectLocation();
// }

请注意,上述代码示例主要展示了如何在uni-app的H5平台上使用uni.getLocation,并处理位置获取的成功与失败情况。对于位置不准确的问题,可以通过提示用户手动选择位置或开启定位权限来尝试解决,但无法完全避免浏览器返回宽泛位置的情况。

回到顶部