我有手动添加到地图上的标记,并且已经实现了SQlite数据库,以便在用户返回地图后检索标记。所有这一切都很好,但是一旦用户点击标记(自定义信息窗口),我似乎无法将额外信息添加到标记中以显示
所以我所做的是我在数据库中创建了字段,然后在onMapLongClick
中添加了这个:
contentValues.put(LocationsDB.FIELD_BMP, mImage + bitmap);
所以在我看来,它告诉我将mImage和位图保存在该字段中以便稍后检索。
然后在检索时我添加了这个:
float img=0;
....
img = arg1.getFloat(arg1.getColumnIndex(LocationsDB.FIELD_BMP));
....
if(locationCount>0){
....
bitmap = myMimage.get(img);
所以这告诉我获取FIELD_BMP并将该图像放在该标记处?
这是我用来获取每个标记的不同信息的代码:
private Map<String, Bitmap> myMimage;
private String mImage;
\\Then in the onCreate method
myMimage = new HashMap<String, Bitmap>();
\\Then to display the phto in the custom info window
View v = getLayoutInflater().inflate(R.layout.custom_window, null);
final ImageView imgIcon = (ImageView) v.findViewById(R.id.marker_icon);
Bitmap bitmap = myMimage.get(marker.getId());
imgIcon.setImageBitmap(bitmap);
然后在放置标记时我使用:
Marker marker = googleMap.addMarker(new MarkerOptions()
.position(pointTappedOnMap));
mImage = marker.getId();
一切正常,它只是不保存该标记的图像 请帮我? 在此先感谢所有!!
或者有人可以指出我正确的方向吗?
答案 0 :(得分:0)
从我看到的情况来看,您没有创建架构来正确地将标记对象存储在SQLiteDB中。如果您将img声明为类型,它不存在,您可能无法创建有效的数据库字段,因为img不是类型。您的数据库架构应如下所示:
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table " + DATABASE_TABLE + " ( " +
FIELD_ROW_ID + " integer primary key autoincrement , " +
FIELD_LNG + " double , " +
FIELD_LAT + " double , " +
FIELD_ZOOM + " text, " +
FIELD_IMAGE + " text" +
" ) ";
db.execSQL(sql);
}
您必须使用两个字段:marker_id(文本或数字)和img(文本引用路径或blob,如果数据库中为二进制)。
此外,在这种情况下,内容提供商的使用不会有所帮助。但是,使用内容值会。