簡體   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