2016-09-05 1 views
0

Wie bestelle ich meine Array-Ergebnisse nach Entfernung ASC?Bestellen Array nach Entfernung in Cordova

Ich brauche die Schleife nach meiner geographischen Koordinaten (Breite/Länge)

Sehen Sie meinen Code zu sortieren:

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); 
    }); 
} 

Antwort

1

Sie berechnen die Entfernung Ihrer Ergebnisse in der Schleife und dann sortieren:

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; 
}) 
Verwandte Themen