quello che sto cercando di fare: l'utente seleziona inizio e destinazione su una mappa e quindi dalle loro coordinate voglio mostrare la posizione del punto più vicino da un elenco di posizioni sulla mappa . Ho un semplice database Sqlite contenente la longitudine, la latitudine e il nome delle possibili posizioni.trova il punto Gps più vicino alla posizione dell'utente forma un elenco
ho fatto qualche ricerca e questo è quello che ho trovato:
http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL
ma questo è significato per il suo utilizzo con MySQL e una sorta di estensione di ricerca spaziale. c'è la possibilità che io possa fare qualcosa di simile usando Android API o librerie esterne?
public Point dialogFindClosestLocationToPoint(geometry.Point aStartPoint){
List<PointWithDistance> helperList=new ArrayList<PointWithDistance>();
try {
openDataBase();
Cursor c=getCursorQueryWithAllTheData();
if(c.moveToFirst())
do{
PointWithDistance helper=new PointWithDistance(c.getDouble(1),c.getDouble(2),c.getString(3));
int distance=returnDistanceBetween2Points(aStartPoint, helper);
if(distance<MAX_SEARCH_DISTANCE){
helper.setDistance(distance);
Log.i("values", helper.name);
helperList.add(helper);
}
}while (c.moveToNext());
Collections.sort(helperList,new PointComparator());
if(helperList!=null)
return helperList.get(0);
else return null;
}catch(SQLException sqle){
throw sqle;
}
finally{
close();
}
questo è il codice nella) classe (PointComparator:
public int compare(PointWithDistance o1, PointWithDistance o2) {
return (o1.getDistance()<o2.getDistance() ? -1 : (o1.getDistance()==o2.getDistance() ? 0 : 1));
}
dove PointWithDistance
è un oggetto che contiene: lat, long, distanza, nome
tuttavia questa soluzione non fa fornire le informazioni di ritorno corrette ... e mi rendo conto che non è affatto scalabile e molto lento. ho bisogno di una soluzione che verrà eseguita velocemente con un database con un massimo di 1000 righe.
edit: il mio c'è stato un errore in questo codice nella selezione ora ho è cambiato (dovrebbe essere < invece di>)
Credo che tu abbia passato variabili attraverso php. $ lat è la tua attuale latitudine, $ lon è la latitudine corrente. Ma cos'è $ R? –
Non è $ R il raggio di terra? vedere: http://www.movable-type.co.uk/scripts/latlong.html – leochab