小程序逆定位、两坐标计算距离

根据坐标逆定位查询位置所在城市信息

  onLoad: function (options) {
    let that = this
    wx.getLocation({
      type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于   wx.openLocation 的坐标
      success: res => {
        const latitude = res.latitude
        const longitude = res.longitude
        wx.request({ 
        //GET请求  location    位置坐标,格式:location= 39.984154,116.307490
       // get_poi    是否返回周边POI列表:1.返回;0不返回(默认)    get_poi=1
       // key    是开发密钥(Key)
          url: "https://apis.map.qq.com/ws/geocoder/v1/?location=" + latitude + "," + longitude + "&key=" + locationId,
           success: (res) => {
              console.log(res)
            }
           })
         },
      })
    }             

根据两坐标计算距离

distance.js
 function distance(la1, lo1, la2, lo2) {
     var La1 = la1 * Math.PI / 180.0;
     var La2 = la2 * Math.PI / 180.0;
     var La3 = La1 - La2;
     var Lb3 = lo1 * Math.PI / 180.0 - lo2 * Math.PI / 180.0;
     var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(La3 / 2), 2) + Math.cos(La1) * Math.cos(La2) * Math.pow(Math.sin(Lb3 / 2), 2)));
     s = s * 6378.164; //地球半径
     return s = Math.round(s * 1000000000) / 1000000000;
 }

 export {
     distance
 }
  onLoad: function (options) {
    let that = this
    
    wx.getLocation({
      type: 'wgs84'// 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标
      success: res => {
        // // success
        const latitude = res.latitude
        const longitude = res.longitude
        that.setData({
          latitude: latitude,
          longitude: longitude,
          show: false
        })
        let CITY = wx.getStorageSync('city')
        wx.setStorageSync("location"res);
        wx.request({
          url: "https://apis.map.qq.com/ws/geocoder/v1/?location=" + latitude + "," +
            longitude + "&key=" + locationId,
          success: (res=> {
            if (res.statusCode == 200) {
              let city = res.data.result.address_component.city
              let address = res.data.result.ad_info.city_code //city_code
              let data = {}
              if (CITY != '') {
                if (city == CITY.cityName) {
                  data.cityNo = address
                } else {
                  data.cityCode = CITY.cityCode
                }
                that.setData({
                  cityName: CITY.cityName,
                  city: city
                  // code: address
                })
              } else {
                data.cityNo = address
                that.setData({
                  cityName: city,
                  city: city
                  // code: address
                })
              }

              // 搜索学校

              http.request({
                url: 'school/list',
                data: data,
                success: (res=> {
                  let location = wx.getStorageSync("location")
                  let schoolDataListArr = [...res.data.list]
                  if (location != '') {
                    schoolDataListArr.forEach(element => {
                      let m_x = location.latitude
                      let m_y = location.longitude
                      let s_x = element.location_X
                      let s_y = element.location_Y
                      let s = distance(m_xm_ys_xs_y)
                      if (s > 1) {
                        let S = parseInt(s)
                        element.d_tance = S + "km"
                      } else {
                        let S = (s * 1000).toFixed(1)
                        element.d_tance = S + "m"
                      }
                    })
                  }
                  this.setData({
                    show: false,
                    schoolDataList: schoolDataListArr
                  });
                },
                fail: function (err) {
                  wx.showToast({
                    title: '网络错误',
                    icon: "none"
                  })
                }
              })
            } else {
              that.setData({
                show: true
              });
            }

          },
          fail: function (err) {
            that.setData({
              show: true
            });
          }
        })
      },
      fail: function (err) {
        that.setData({
          show: true
        });
      }
    })
原文地址:https://www.cnblogs.com/tt-ff/p/12073243.html