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

标签 android sqlite gps coordinates

我的 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)总是假的。 :-)

关于android - 使用 SQLite 和 Android 查找附近的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8232685/

相关文章:

sql - 当我的来源是维恩图时,如何设计数据库表?

python - 从 Python 中的字符串推断适当的数据库类型声明

android - 确定移动设备是否在移动的飞机上?

android - 如何在进度条中制作两种颜色的圆角矩形?

android - Surfaceview/线程崩溃后返回 Activity :

android - 以编程方式启动 Android 中的 'Add Google Account' Activity

android - LocationServices.FusedLocationApi.requestLocationUpdates onLocationChanged 没有被回调

android - 在 OpenSL ES 记录器对象上请求接口(interface) SL_IID_ANDROIDSIMPLEBUFFERQUEUE 返回 SL_RESULT_FEATURE_UNSUPPORTED

SQLite AUTOINCREMENT 非主键列

geolocation - 如何在距另一个地理点的距离 d 内创建随机地理点?