Android G 地图标记了如何在共享首选项中存储图标



嗨,我创建了一些代码,将用户的点击事件保存在我的共享首选项中。所以基本上在地图上单击一个标记,当我重新运行应用程序时,标记会从共享首选项中再次显示。问题是对于标记,我设置了一个不同的图标,当我单击在地图上添加标记时,图标很好,但是当我重新加载地图时,图标将更改为默认的谷歌地图图标。关于这个问题有什么建议吗?

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)));
如果您有

多种类型的标记(例如:- 医院,学校,寺庙等),则应将它们保存在可绘制文件夹中,然后将带有纬度和经度值的标记类型存储在数据库表中...地图加载时间时,从表中选择所有值并检查哪种类型的标记,并将可绘制对象与纬度和经度值一起放置

相关内容

  • 没有找到相关文章

最新更新