繁体   English   中英

从用户那里获得X KM范围内的所有用户

[英]get all the users within X KM range from a user

我有一组用户及其gps坐标。 我可以使用什么公式从一个用户那里获得X KM范围内的所有用户?

我需要避免繁重的计算。 我当时正在考虑对数组进行排序,但是我意识到这不是一个好主意,因为我必须为每个用户设置一个排序后的数组。

使用Haversine公式查找距指定点指定距离之内的用户:

function getNearbyUsers(lat, lng, distanceInKm, users) {
    var R = 6373;

    var latRad = lat * Math.PI/180;
    var lngRad = lng * Math.PI/180;

    var returnUsers = [];

    for (var i = 0; i < users.length; i++) {
        var lat2Rad = users[i].lat * Math.PI/180;
        var lng2Rad = users[i].lng * Math.PI/180;
        var dlat = lat2Rad - latRad;
        var dlng = lng2Rad - lngRad;
        var a  = Math.pow(Math.sin(dlat/2),2) + Math.cos(latRad) * Math.cos(lat2Rad) * Math.pow(Math.sin(dlng/2),2);
        var c  = 2 * Math.atan2(Math.sqrt(a),Math.sqrt(1-a)); // great circle distance in radians
        var d = c * R; // Distance from user in km

        if (d < distanceInKm) returnUsers.push(users[i]);
    }

    return returnUsers;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM