lo que trato de hacer: el usuario selecciona inicio y destino en un mapa y luego desde sus coordenadas quiero mostrar la ubicación más cercana de una lista de ubicaciones en el mapa . Tengo una base de datos Sqlite simple que contiene la longitud, la latitud y el nombre de las posibles ubicaciones.busque el punto Gps más cercano a la ubicación del usuario de una lista
hice algunas investigaciones y esto es lo que encontré:
http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL
pero esto es para usarlo con MySQL y una especie de extensión de búsqueda espacial. ¿hay alguna posibilidad de que pueda hacer algo similar usando la API de Android o las librerías externas?
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();
}
este es el código de la clase PointComparator():
public int compare(PointWithDistance o1, PointWithDistance o2) {
return (o1.getDistance()<o2.getDistance() ? -1 : (o1.getDistance()==o2.getDistance() ? 0 : 1));
}
donde PointWithDistance
es un objeto que contiene: latitud, longitud, distancia, nombre
sin embargo esta solución no hace proporcione la información de devolución correcta ... y me doy cuenta de que no es escalable y muy lenta. Necesito una solución que se ejecute rápidamente con una base de datos con un máximo de 1000 filas.
edición: mi había un error en el código de la clasificación ahora tengo que cambiar (debe estar < en lugar de>)
Creo que ha estado pasando variables a través de php. $ lat es su latitud actual, $ lon es la latitud actual. Pero, ¿qué es $ R? –
¿No es $ R el radio de la tierra? ver: http://www.movable-type.co.uk/scripts/latlong.html – leochab