小程序模板:专业的小程序模板与静态模板分享平台
小程序
教程
搜索
当前位置 : 首页> 小程序教程> 微信小程序中使用 wx.getLocation获取当前详细位置并计算距离

微信小程序中使用 wx.getLocation获取当前详细位置并计算距离

当使用微信小程序中的wx.getLocation获取当前详细位置并计算距离时,你可以按照以下步骤进行操作。

1. 在onLoad等页面生命周期回调函数中先判断用户是否授权获取地理位置权限,如果没有则引导用户进行授权。

// 检查用户是否已经授权获取地理位置权限
wx.getSetting({
  success(res) {
    if (!res.authSetting['scope.userLocation']) {
      // 未授权,则引导用户授权
      wx.authorize({
        scope: 'scope.userLocation',
        success() {
          // 用户已授权
        },
        fail() {
          // 用户拒绝授权或当前环境不支持该 API
          // 可在此处进行错误处理或引导用户手动开启授权
        }
      })
    }
  }
})


2. 在需要获取位置信息的地方调用wx.getLocation方法,获取当前详细位置的经纬度。

wx.getLocation({
  type: 'gcj02', // 返回国测局坐标系,可根据需求选择使用 wgs84 等其他坐标系
  success(res) {
    const latitude = res.latitude; // 纬度
    const longitude = res.longitude; // 经度

    // 这里可以根据获取的经纬度进行距离计算等操作
    // 例如调用后台接口获取目标位置的经纬度,再使用合适的距离计算算法计算距离等
  },
  fail() {
    // 获取位置信息失败
    // 可在此处进行错误处理
  }
})


3. 在获取自己位置之后,可以根据获取的经纬度调用后台接口获取目标位置的经纬度,再使用距离计算算法计算距离。

// 示例:使用 Haversine Formula 计算距离
function getDistance(lat1, lon1, lat2, lon2) {
  const R = 6371; // 地球半径,单位:千米
  const dLat = (lat2 - lat1) * Math.PI / 180;
  const dLon = (lon2 - lon1) * Math.PI / 180;
  const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
    Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
    Math.sin(dLon / 2) * Math.sin(dLon / 2);
  const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  const d = R * c;
  return d;
}

// 在获取到自己的经纬度后,再调用后台接口获取目标位置的经纬度
const myLat = 40.7128; // 示例:自己的纬度
const myLon = -74.0060; // 示例:自己的经度
const targetLat = 34.0522; // 示例:目标位置的纬度
const targetLon = -118.2437; // 示例:目标位置的经度

const distance = getDistance(myLat, myLon, targetLat, targetLon);
console.log('距离为:', distance);


联系客服 意见反馈

签到成功!

已连续签到1天,签到3天将获得积分VIP1天

知道了