uni-app中uni.getLocation在h5平台始终返回当前行政区的区政府定位
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一直返回当前行政区 区政府的经纬度
不使用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
,并处理位置获取的成功与失败情况。对于位置不准确的问题,可以通过提示用户手动选择位置或开启定位权限来尝试解决,但无法完全避免浏览器返回宽泛位置的情况。