3***@qq.com
3***@qq.com
  • 发布:2024-02-05 22:07
  • 更新:2024-02-06 08:40
  • 阅读:288

怎样实现距离排序?

分类:uniCloud

用unicloud➕云数据库。开发一个同城服务。 想实现一个距离排序,由进到远。请问如何实现?有无方法?

2024-02-05 22:07 负责人:无 分享
已邀请:
套马杆的套子

套马杆的套子 - 没有解决不了的问题,只有解决不完的问题

jql不知道可以不可以直接计算,像mysql,之前写过存储过程用Haversine公式来计算
不过最笨的方法,应该就在云函数中算吧或者js中,不知道能满足你不,类似于下面的js的算法
1.获取用户位置存到云数据库

  1. 用用户位置和数据库中的经纬度计算距离,排序就行吧
function calculateDistance(lat1, lon1, lat2, lon2) {  
    const R = 6371; // 地球平均半径(单位为千米)  

    const dLat = (lat2 - lat1).toRadians();  
    const dLon = (lon2 - lon1).toRadians();  

    const a = Math.sin(dLat / 2) * Math.sin(dLat / 2)    
              Math.cos(lat1.toRadians()) * Math.cos(lat2.toRadians()) *  
              Math.sin(dLon / 2) * Math.sin(dLon / 2);  

    const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));  

    return R * c;  
}  

// 调用函数进行测试  
const distanceInKm = calculateDistance(40.7128, -74.0060, 51.5074, -0.1278);  
console.log(`两个地点之间的距离为 ${distanceInKm} 千米`);

要回复问题请先登录注册