2011-12-30 22 views
1

私は地図にポイントを追加しています、その場所私はdatabseに保存しています。以前に追加したポイントを地図上でクリックすると、あるポイントをクリックしたときにSQLiteクエリを実行します。明らかに、表示されているアイテムをクリックすると100%正確ではありません。私はそれが望ましい点(より多くの情報が画像に見られる)としてクリックを受け入れる二乗された領域を発明しました。私はSQliteクエリのためにこの領域を4つの象限に分けました。もしそれがポイント選択として受け入れられれば、私は指をその象限の1つにだけ置く必要があります。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、coord_Xとcoord_Yは私の指でクリックした画面の座標です。

ここが問題です - 私は悪いアプローチを使用していますか?私が提供したこのSQL文は動作していません。理由はわかりません。この場合、誰も助けてくれますか?ありがとう

+0

?ポイントが四角形の四隅にあるようにしたくないですか? – hwrdprkns

+0

ああ、ありがとう。私はこれを監督しました...これを答えにして、私はそれを返信としてマークします – Waypoint

答えて

1

これらはすべて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+") 
+0

さらにもう一つの質問は、四角ではなく円の境界を作る方法を知っていますか? – Waypoint

+0

簡単な方法はありません。 '0 hwrdprkns

+0

他の人の回答をコピーするのは良い方法ではありません。 –

1

あなたは両側に2つの境界ラインを持っているので、あなたはに簡素化することができます:彼らはすべてノー、 `AND`あるべき

"(location_X <="+cXplus+" AND location_X >="+cXminus+" AND location_Y >="+cYminus+" 
AND location_Y <="+cYplus")" 
関連する問題