排序后的结果展示给用户,需要显示每条结果的具体距离,自己在网上找的方法计算出来的结果和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
},
老哥,
1.把代码贴全啊
2.这个距离函数没问题的,和主流地图计算的两点距离基本一致(前提是type:'gcj02')
上你的代码。