我的SQLite数据库中有一个数据表,其中包含有关经度,纬度和描述的信息。鉴于某个位置,我希望得到距离该位置近距离(10个街区)的所有行。
这是加载数据的方式:
values.put(LONGITUD_COLUMN, (int) (-64.14802 * 1E6));
values.put(LATITUD_COLUMN, (int) (-31.36498 * 1E6));
到目前为止,这就是我在代码中所拥有的:
private int cuadras = (int)(-0.02 * 1E6) ; //10 blocks aprox, I guess
private int current_latitude = 0;
private int current_longitude = 0;
current_latitude和current_longitude,加载(来自LocationListener):
public void onLocationChanged(Location location) {
current_latitude = (int) (location.getLatitude() * 1E6);
current_longitude = (int) (location.getLongitude() * 1E6);
}
SQLite查询如下:
String sql = "LATITUD_COLUMN > (" + (current_latitude + cuadras) + ") AND "
+ "LATITUD_COLUMN < (" + (current_latitude - cuadras) +") AND "
+ "LONGITUD_COLUMN > ("+ (current_longitude - cuadras) +") AND "
+ "LONGITUD_COLUMN < ("+ (current_longitude + cuadras) +")";
结果如下:
LATITUD_COLUMN > (-31398170) AND LATITUD_COLUMN < (-31358170) AND LONGITUD_COLUMN > (-64132838) AND LONGITUD_COLUMN < (-64172838)
该查询根本不返回任何结果,我的问题是,如何查询DataBase,将所有位置置于当前位置附近?
谢谢!
答案 0 :(得分:4)
您似乎有+和 - 混在一起:
String sql = "LATITUD_COLUMN > (" + (current_latitude + cuadras) + ") AND "
+ "LATITUD_COLUMN < (" + (current_latitude - cuadras) +") AND "
+ "LONGITUD_COLUMN > ("+ (current_longitude - cuadras) +") AND "
+ "LONGITUD_COLUMN < ("+ (current_longitude + cuadras) +")";
应该是
String sql = "LATITUD_COLUMN > (" + (current_latitude + cuadras) + ") AND "
+ "LATITUD_COLUMN < (" + (current_latitude - cuadras) +") AND "
+ "LONGITUD_COLUMN > ("+ (current_longitude + cuadras) +") AND "
+ "LONGITUD_COLUMN < ("+ (current_longitude - cuadras) +")";
注意最后两行中交换的+和 - 。
LONGITUD_COLUMN > (-64132838) AND LONGITUD_COLUMN < (-64172838)
总是假的。 : - )