In base allo standard Android Documentation per Parse, l'ordinamento predefinito deve essere già in base alla distanza (il più vicino al più lontano), a meno che non si specifichi un altro ordinamento.
Inoltre, si potrebbe voler esaminare le ParseQuery.whereWithin*
metodi come è possibile specificare desideri solo posizioni all'interno di un certo numero di miglia, chilometri, ecc
Se tutto il resto fallisce e l'ordinamento semplicemente non lo fa vuoi lavorare sulle posizioni restituite, puoi sempre ordinarle manualmente eseguendo il looping dei numeri ParseObject
restituiti dalla query e utilizzando ParseObject.getParseGeoPoint("rest_location")
.
che restituirà un oggetto ParseGeoPoint
e quindi è possibile effettuare le seguenti operazioni
ParseGeoPoint.distanceInKilometersTo(sLatlong);
Per ottenere la distanza la posizione dell'utente e ordinare su questo.
Per riferimento qui è un campione Comparator
:
public class UserLocationComparator implements Comparator<ParseObject> {
private final ParseGeoPoint userLoc;
public UserLocationComparator(ParseGeoPoint userLoc) {
this.userLoc = userLoc;
}
@Override
public int compare(ParseObject po1, ParseObject po2) {
ParseGeoPoint loc1 = po1.getParseGeoPoint("rest_location");
ParseGeoPoint loc2 = po2.getParseGeoPoint("rest_location");
return loc1 == null ?
(loc2 == null ? 0 : 1) :
(loc2 == null ? -1 : Double.compare(userLoc.distanceInKilometersTo(loc1), userLoc.distanceInKilometersTo(loc2)));
}
}
e poi ammesso che abbiate un List<ParseObject> results;
fare semplicemente:
Collections.sort(results, new UserLocationComparator(sLatlong));
fonte
2016-02-05 18:44:16
Sapete che Parse si sta spegnendo giusto? A gennaio 2017 il loro servizio verrà chiuso. http://blog.parse.com/announcements/moving-on/ – Dom
Sì, lo so. Userò questo solo per 3 mesi, per convalidare la mia idea. – Anirudh
Come nota a margine della mia risposta quando dici che i risultati non sono ordinati a distanza stai verificando l'ordine dei risultati nel metodo 'FindCallback.done (...)'? Altrimenti dove altro stai verificando l'ordine dei risultati? Forse stai modificando l'ordine da solo dopo aver elaborato i risultati. –