您好我已经创建了一些代码,我在共享首选项上保存用户点击事件。因此,基本上在地图上点击标记会被添加,当我重新运行应用程序时,标记会再次显示在共享首选项中。问题是,对于标记我设置了一个不同的图标,当我点击在地图上添加标记时图标很好,但是当我重新加载地图时,图标会变为默认的谷歌地图图标。关于这个问题的任何建议??
SHARED PREFERENCES.
SharedPreferences prefs = null;//Place it before onCreate you can access its values any where in
this class
// onCreate method started
prefs = this.getSharedPreferences("LatLng",MODE_PRIVATE);
//Check whether your preferences contains any values then we get those values
if((prefs.contains("Lat")) && (prefs.contains("Lng"))
{
String lat = prefs.getString("Lat","");
String lng = prefs.getString("Lng","");
LatLng l =new LatLng(Double.parseDouble(lat),Double.parseDouble(lng));
gMap.addMarker(new MarkerOptions().position(l));
}
Inside your onMapClick
gMap.setOnMapClickListener(new GoogleMap.OnMapClickListener(){
@Override
public void onMapClick(LatLng point) {
marker = gMap.addMarker(new MarkerOptions().position(point));
/* This code will save your location coordinates in SharedPrefrence when you click on the map and
later you use it */
prefs.edit().putString("Lat",String.valueOf(point.latitude)).commit();
prefs.edit().putString("Lng",String.valueOf(point.longitude)).commit();
}
});
THE ONCLICK EVENT。
gMap.setOnMapClickListener(new GoogleMap.OnMapClickListener(){
@Override
public void onMapClick(LatLng point) {
gMap.addMarker(new MarkerOptions()
.position(point).
title("BEACH").
snippet("added by user.")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.b)));
prefss.edit().putString("Lat",String.valueOf(point.latitude)).commit();
prefss.edit().putString("Lng",String.valueOf(point.longitude)).commit();
}
});
答案 0 :(得分:1)
您可以在SharedPreferences.
中为每个制作者存储图像的resourceId然后您可以使用icon()
方法并传入BitmapDescriptorFactory.fromResource(resourceId)
来获取该ID并设置图标。换句话说,
如果要保存resourceId,请使用
prefs.edit().putInt(KEY_FOR_MARKER_ICON, iconResourceId);
然后在您想稍后显示时抓取ID。
prefs.getInt(KEY_FOR_MARKER_ICON, 0);
markerOptions.icon(BitmapDescriptorFactory.fromResource(resourceId));
我认为,如果您查看onCreate()
代码并更改
marker = gMap.addMarker(new MarkerOptions().position(point));
到
marker = gMap.addMarker(new MarkerOptions().position(point)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.b)));
答案 1 :(得分:0)
如果您有多种类型的标记(例如: - 医院,学校,寺庙等...),您应该将它们保存在可绘制文件夹中,然后将标记类型与纬度和经度值一起存储在数据库表中...加载时间从表中选择所有值并检查标记的类型,并将drawable与纬度和经度值放在一起