收藏
回答

geoNear的距离计算方式是什么?

排序后的结果展示给用户,需要显示每条结果的具体距离,自己在网上找的方法计算出来的结果和geoNear计算的不同,具体表现就是结果列表并不是按距离远近排序,例如列表显示的距离按顺序是 2,3,3,4,3,5,4,6(单位:公里)

以下是本人使用的距离计算函数(来自社区)

distance: function(lng1, lat1, lng2, lat2) {
    //计算距离
    lng1 = lng1 || 0; lat1 = lat1 || 0; lng2 = lng2 || 0;lat2 = lat2 || 0;
    let rad1 = lng1 * Math.PI / 180.0
    let rad2 = lng2 * Math.PI / 180.0
    let a = rad1 - rad2
    let b = lat1 * Math.PI / 180.0 - lat2 * Math.PI / 180.0
    let r = 6378.137
    let distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)))
    distance = Math.ceil(distance)
   return distance
  },

最后一次编辑于  2020-03-02
回答关注问题邀请回答
收藏

2 个回答

  • 拎包哥
    拎包哥
    2020-03-02

    老哥,

    1.把代码贴全啊

    2.这个距离函数没问题的,和主流地图计算的两点距离基本一致(前提是type:'gcj02')

    2020-03-02
    有用
    回复
  • 老张
    老张
    2020-03-01

    上你的代码。

    2020-03-01
    有用
    回复
登录 后发表内容
问题标签