javascript - Cordova 中按距离排序数组

标签 javascript cordova

如何按距离 ASC 对数组结果进行排序?

我需要根据我的地理坐标(纬度/经度)对循环进行排序

查看我的代码:

function calculateDistance(lat1, lon1, lat2, lon2)
{
    var radlat1 = Math.PI * lat1/180
    var radlat2 = Math.PI * lat2/180
    var radlon1 = Math.PI * lon1/180
    var radlon2 = Math.PI * lon2/180
    var theta = lon1-lon2
    var radtheta = Math.PI * theta/180
    var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
    dist = Math.acos(dist)
    dist = dist * 180/Math.PI
    dist = dist * 60 * 1.1515
    dist = dist * 1.609344 * 1000
    return Math.round(dist)
}
function places()
{
    db.transaction(function(transaction) {
        transaction.executeSql('SELECT * FROM places', [], function (tx, results) {
            for (i = 0; i < results.rows.length; i++)
            {
                var distance = calculateDistance(mylat, mylng, results.rows.item(i).lat, results.rows.item(i).lng);
            }
        }, null);
    });
}

最佳答案

您可以计算循环内结果的距离,然后排序:

for (i = 0; i < results.rows.length; i++) {
  results.rows[i].distance = calculateDistance(mylat, mylng, results.rows.item(i).lat, results.rows.item(i).lng);
}
results.rows.sort(function(a, b) {
  return a.distance - b.distance;
})

关于javascript - Cordova 中按距离排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39337252/

相关文章:

javascript - 交换 AngularJS 语法导致错误

javascript - Ajax POST int 到 MVC

javascript - Socket IO - Socket.emit 发送到所有客户端

javascript - 对 "big"文件使用 PhoneGap FileWriter.write

ios - PhoneGap 3.3 HideKeyboardFormAccessoryBar 不工作

android - Meteor cordova 应用程序不进行热代码推送

javascript - 在 Rails 应用程序中对 Javascript 繁重的 UI 进行集成测试的最佳方法是什么?

javascript - jquery 选择点击做某事

android - PhoneGap AdMob 插件中 undefined variable admob

facebook - Cordova /Phonegap : Can't get Facebook Phonegap plugin to work