то, что я пытаюсь сделать: пользователь выбирает начало и пункт назначения на карте, а затем по их координатам я хочу показать местоположение ближайшей точки из списка местоположений на карте. У меня есть простая база данных Sqlite, содержащая долготу, широту и названия возможных мест.
Я провел небольшое исследование и вот что я нашел:
public Point dialogFindClosestLocationToPoint(geometry.Point aStartPoint){
List helperList=new ArrayList();
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
это код в классе PointComparator ():
public int compare(PointWithDistance o1, PointWithDistance o2) {
return (o1.getDistance()
где PointWithDistance
- это объект, содержащий: lat, long , distance, name
, однако это решение не предоставляет правильную информацию о возврате ... и я понимаю, что это совсем не масштабируемое и очень медленное. Мне нужно решение, которое будет быстро выполняться с базой данных с макс. 1000 строк.
edit: моя ошибка в этом коде при сортировке, теперь я изменил ее (должно быть )