当前位置:首页 > 数据库 > SQlite

使用SQLite和Android查找附近的位置

我的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)

该查询根本不会返回任何结果,我的问题是,如何查询将所有位置都靠近当前位置的数据库?

谢谢!

解决方法:

您似乎混合了-

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)始终为假. :-)


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!