您好,小程序模板欢迎您。
小程序模板
当前位置 : 首页> 小程序教程> 微信小程序计算地球经纬度两点之间的距离

微信小程序计算地球经纬度两点之间的距离

移动应用开辟了定位与导航功能,而这个涉及到计算地球上两点(经纬度)之间的距离,比如在微信小程序上求当前位置与预定位置之间的距离的计算。下面给出微信小程序中代码如何计算,如下:

Page({
  data: {
   targetLatitude: xxx,
   targetLongitude: xxx,
  },
  onLoad: function (options) {
    getCurrentLocation();
  },
  getCurrentLocation: function() {
    const { targetLatitude, targetLongitude } = this.data;
    const that = this;
    
    wx.getLocation({
      type: 'wgs84',
      success(res) {
        const currentLatitude = res.latitude;
        const currentLongitude = res.longitude;
        const distance = that.calDistance(latitude, longitude, targetLatitude, targetLongitude);
        
        that.setData({
          latitude,
          longitude,
          distance
        });
      }
    });
  },
  calDistance: function (latitude1, longitude1, latitude2, longitude2) {
    var iLatitude1 = latitude1 * Math.PI / 180.0;
    var iLatitude2 = latitude2 * Math.PI / 180.0;
    var xLatitude = iLatitude1 - iLatitude2;
    var xLongitude = longitude1 * Math.PI / 180.0 - longitude2 * Math.PI / 180.0;

    //求地球上两点之间的距离
    var iDistance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(xLatitude / 2), 2) + Math.cos(iLatitude1) * Math.cos(iLatitude2) * Math.pow(Math.sin(xLongitude / 2), 2)));

    //地球半径
    iDistance = iDistance * 6378.137; 
    iDistance = Math.round(iDistance * 10000) / 10000;
    iDistance = iDistance.toFixed(2);
    
    return iDistance;
  },
})

在上述代码中,假定目标经纬度点是(targetLatitude, targetLongitude), 后通过wx.getLocation获取当前的经纬度点(currentLatitude, currentLongitude),最后通过calDistance计算出这两点之间的距离。

联系客服 意见反馈

签到成功!

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

知道了