如何计算地图上两点距离


计算地图两点之间距离

B662A782-D9AD-4355-847C-D167C463483E

微信小程序启用位置功能需要现在app.json启用地理位置功能

"permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示" 
    }
  }

上架需要注意

暂只针对国内主体如下类目的小程序开放,需要先通过类目审核,再在小程序管理后台,「开发」-「开发管理」-「接口设置」中自助开通该接口权限。 接口权限申请入口将于2022年3月11日开始内测,于3月31日全量上线。并从4月18日开始,在代码审核环节将检测该接口是否已完成开通,如未开通,将在代码提审环节进行拦截。

获取当前地理位置信息

  onShow: function () {
    var that = this
    wx.getLocation({
      type: 'wgs84',
      success(res) {
        const latitude = res.latitude //维度
        const longitude = res.longitude //经度
        var lat2 = 34.224167   // 这个是目的地经纬度
        var lng2 = 108.941944   // 这个是目的地经纬度
        let space = that.space(latitude, longitude, lat2, lng2)
        console.log('我跟小寨之间的距离是:', space, '千米')
      }
    })

接口调用入参

image-20220518114531859

成功回调函数

image-20220518114600217

计算位置的方法 返回数据为千米

  /**

   * caculate the great circle distance

   * @param {Object} lat1 维度1

   * @param {Object} lng1 经度1

   * @param {Object} lat2 维度2

   * @param {Object} lng2 经度2

   */
  space(lat1, lng1, lat2, lng2) {
    console.log(lat1, lng1, lat2, lng2)
    var radLat1 = lat1 * Math.PI / 180.0;
    var radLat2 = lat2 * Math.PI / 180.0;
    var a = radLat1 - radLat2;
    var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
    var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
      Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
    s = s * 6378.137;
    s = Math.round(s * 10000) / 10000;
    return s // 单位千米
  },

如何获取目的地经纬度?

通过谷歌地图获取 或者 其他方式 然后把度分秒格式的经纬度转换成常用表示方式

879E5C6E-DAF0-4e1d-8967-95E31B1D64DC

https://www.17ditu.com/tool/convert/


文章作者: DRK
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 苏格拉没有底!
评论-----昵称和邮箱必填,网址选填
  目录