嗨,我创建了一些代码,将用户的点击事件保存在我的共享首选项中。所以基本上在地图上单击一个标记,当我重新运行应用程序时,标记会从共享首选项中再次显示。问题是对于标记,我设置了一个不同的图标,当我单击在地图上添加标记时,图标很好,但是当我重新加载地图时,图标将更改为默认的谷歌地图图标。关于这个问题有什么建议吗?
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();
}
});
ONCLICK 事件。
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();
}
});
您可以将每个制作者的图像的资源 Id 存储在SharedPreferences.
中 然后,您可以使用 icon()
方法获取该 ID 并设置图标 BitmapDescriptorFactory.fromResource(resourceId)
.换句话说,
如果要保存资源 ID,请使用
prefs.edit().putInt(KEY_FOR_MARKER_ICON, iconResourceId);
然后在以后要显示 ID 时获取 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)));
多种类型的标记(例如:- 医院,学校,寺庙等),则应将它们保存在可绘制文件夹中,然后将带有纬度和经度值的标记类型存储在数据库表中...地图加载时间时,从表中选择所有值并检查哪种类型的标记,并将可绘制对象与纬度和经度值一起放置