如何从数据库中检索位置对象?

时间:2010-11-17 15:43:53

标签: android database gps location

我想将Location对象存储到我的数据库中,然后才能加载它们。如何从其属性构建Location对象?

  • 我应该创建一个空白位置然后设置属性吗? (如果是,怎么样?)
  • 我应该将我的数据库用作LocationProvider吗? (如果是,怎么样?)

谢谢!

编辑:到目前为止我找到的唯一可行解决方案是检索当前位置,并覆盖所有属性......必须有更好的方法!

我的代码:

public Location selectLocationById(int id){
    String query = "SELECT * FROM " + LOCATIONS_TABLE + " WHERE id = " + id + ";";
    Cursor c = db.rawQuery(query, null);
    Location l = null;
    if(c.getCount() == 1) {
        c.moveToFirst();
        if(c.getColumnCount() == 8){
            l = new Location(MyProject.getCurrentLoc());
            l.setAccuracy(c.getFloat(1));
            l.setAltitude(c.getDouble(2));
            l.setBearing(c.getFloat(3));
            l.setLatitude(c.getDouble(4));
            l.setLongitude(c.getDouble(5));
            l.setSpeed(c.getFloat(6));
            l.setTime(c.getLong(7));
        }
    }

    if(c != null && !c.isClosed()) {
        c.close();
    }

    return l;
}

1 个答案:

答案 0 :(得分:3)

这是有道理的。我相信你可以使用

l = new Location(null);

这样您就不必获取当前位置。这应该仍然创建一个新的Location,但提供者字符串为null,使用另一个Location构造函数:

Location(String provider)

请参阅http://developer.android.com/reference/android/location/Location.html