在 UniApp 的 H5 环境中,获取地理位置可以通过 HTML5 的 Geolocation API 实现。以下是具体步骤和代码示例:
实现方法:
- 检查浏览器支持:确认用户的浏览器支持 Geolocation API。
- 调用定位方法:使用 uni.getLocation或直接调用navigator.geolocation.getCurrentPosition。
- 处理权限问题:H5 中需要用户授权,可能会弹出位置权限请求。
代码示例:
// 方法一:使用 UniApp 封装的 API(推荐,兼容多端)
uni.getLocation({
  type: 'wgs84', // 默认为 wgs84,返回 GPS 坐标
  success: (res) => {
    console.log('纬度:' + res.latitude);
    console.log('经度:' + res.longitude);
  },
  fail: (err) => {
    console.error('获取位置失败:', err);
    // 失败时尝试使用 HTML5 API
    this.getHTML5Location();
  }
});
// 方法二:直接使用 HTML5 Geolocation API(备用)
getHTML5Location() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(
      (position) => {
        const lat = position.coords.latitude;
        const lng = position.coords.longitude;
        console.log('HTML5 纬度:', lat, '经度:', lng);
      },
      (error) => {
        console.error('HTML5 定位错误:', error.message);
      }
    );
  } else {
    console.error('浏览器不支持 Geolocation');
  }
}
注意事项:
- HTTPS 要求:H5 环境在部分浏览器中要求使用 HTTPS 协议才能获取地理位置。
- 用户授权:首次调用时会请求用户位置权限,需用户允许。
- 精度问题:type可设为gcj02(国测局坐标,适用于高德、腾讯地图)或wgs84(GPS 坐标)。
- 兼容性:UniApp API 在部分 H5 环境中可能受限,HTML5 API 作为备用方案。
如果遇到权限被拒绝或定位失败,请检查浏览器设置或网络环境。