我正在关注之前的问题(位于此处:Get Latitude and Longitude from SQLite database for use in Android MapOverlay)
我理解那里的代码,我的数据库有类似的布局,因为它有4列; id,name,lat和lng。我甚至想要做那里所说的,因为它从该表中选择所有并将lat作为叠加点。我的问题是答案需要一些先决条件,所以我只是想知道是否有人可以帮助我做一些有用的工作。
先谢谢,这是我编辑的当前代码状态;
ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
Cursor locationCursor = databaseObject.query("locations", new String[] {"image_id", "name", "lat", "lng" }, null, null, null, null);
locationCursor.moveToFirst();
do {
String image_id = locationCursor.getString(locationCursor
.getColumnIndex("image_id"));
String name = locationCursor.getString(locationCursor
.getColumnIndex("name"));
int latitude = (int) (locationCursor.getDouble(locationCursor
.getColumnIndex("lat")) * 1E6);
int longitude = (int) (locationCursor.getDouble(locationCursor
.getColumnIndex("lng")) * 1E6);
items.add(new OverlayItem(new GeoPoint(latitude, longitude), image_id, name));
} while (locationCursor.moveToNext());
更具体地说,我得到了一个带有databaseObject.query的错误,我假设是因为我之前没有这些部分。
编辑。
为了一些额外的清晰度,目的是从phpmyadmin中的我的表中获取lat和long值,并在google地图叠加层上的Android应用程序中显示它们。上面的代码是我发现的一个示例的显示,但无法使其工作,因为代码需要一些部分才能使用
答案 0 :(得分:1)
如果查询没有返回任何记录,则游标将为空,无论如何都会执行do while
语句,最终会抛出错误。试试这个
编辑::
SQLiteDatabase databaseObject = null;
databaseObject = this.openOrCreateDatabase(SAMPLE_DB_NAME, MODE_PRIVATE, null);
ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
Cursor locationCursor = databaseObject.query("locations", new String[] {"image_id", "name", "lat", "lng" }, null, null, null, null);
while (locationCursor.moveToNext()){
String image_id = locationCursor.getString(locationCursor
.getColumnIndex("image_id"));
String name = locationCursor.getString(locationCursor
.getColumnIndex("name"));
int latitude = (int) (locationCursor.getDouble(locationCursor
.getColumnIndex("lat")) * 1E6);
int longitude = (int) (locationCursor.getDouble(locationCursor
.getColumnIndex("lng")) * 1E6);
items.add(new OverlayItem(new GeoPoint(latitude, longitude), image_id, name));
}
答案 1 :(得分:0)