SQLite - как запросить пространственную привязку? - PullRequest
1 голос
/ 30 декабря 2011

Я добавляю точки на карту, их местоположение я сохраняю в базе данных.Когда я нажимаю на ранее добавленную точку на карте, я хочу выполнить запрос SQLite, где я щелкнул по какой-то точке.Очевидно, что вы не на 100% правильно нажимаете на элемент на дисплее.Я изобрел прямоугольную область, которая будет принимать щелчок как желаемую точку (больше информации видно на изображении).Я разделил эту область на четыре квадранта для запроса SQlite - если он принят в качестве выбора точки, я должен указывать только один палец и только в один из этих квадрантов.

enter image description here

Я использую оператор SQL для выяснения, нажал ли я на точку или нет:

cursor=db.query("points_details2", null ,"(location_X <="+cXplus+" AND location_Y >="+cYminus+") OR (location_X >="+cXminus+" AND location_Y >="+cYminus+") OR (location_X <="+cXplus+" AND location_Y <="+cYplus+") OR (location_X >="+cXminus+" AND location_Y <="+cYplus+")", null, null, null, null);
                            Log.d("POINT", "Cursor "+cursor.getColumnName(0));
                cursor.moveToFirst();

                while (cursor.isAfterLast() == false) {
                    Log.d("POINT","data is: "+cursor.getInt(0)+", "+cursor.getString(1)+", "+cursor.getString(2)+", "+cursor.getDouble(3)+", "+cursor.getDouble(4));
                    cursor.moveToNext();
                }
                cursor.close();

И границы определены как:

double cXplus=coord_X+5;
double cXminus=coord_X-5;
double cYplus=coord_Y+5;
double cYminus=coord_Y-5;

Итак, вот граница 5, координаты_X и координаты_Y - это координаты щелчка моего экрана пальцем.

Вот в чем дело - я использую плохой подход?Это заявление SQL, которое я предоставил, не работает, и я не знаю почему.Может ли кто-нибудь помочь мне в этом случае?Спасибо

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Поскольку у вас есть две ограничительные линии на каждой стороне, вы можете упростить до:

"(location_X <="+cXplus+" AND location_X >="+cXminus+" AND location_Y >="+cYminus+" 
AND location_Y <="+cYplus")"
1 голос
/ 30 декабря 2011

Все они должны быть AND!Вы хотите, чтобы точка находилась внутри ВСЕХ четырех углов квадрата.

т.е.

(location_X <="+cXplus+" AND location_Y >="+cYminus+") AND (location_X >="+cXminus+" AND location_Y >="+cYminus+") AND (location_X <="+cXplus+" AND location_Y <="+cYplus+") AND (location_X >="+cXminus+" AND location_Y <="+cYplus+")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...