android - 退出应用程序或导航到不同的 Activity 时,如何保存手动添加到 google maps v2 的标记?

标签 android google-maps

我有一张 map ,用户可以添加不同的标记,但问题是当标记已添加并且用户离开应用程序或离开 map 导航到新 Activity 并返回 map 时,添加的标记消失了.我是 Android 应用程序开发的新手,有人可以帮助我吗?

这是我的代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_googlemaps);
 }

@Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

 }

@Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
try {
        initilizeMap();

    } catch (Exception e) {
        e.printStackTrace();
    }
    }
 private void initilizeMap() {
    if (googleMap == null) {
        googleMap = ((MapFragment)  getFragmentManager().findFragmentById(R.id.map)).getMap();

        if (googleMap == null) {
            Toast.makeText(getApplicationContext(),
                    "Sorry! aren't able to create your map", Toast.LENGTH_SHORT)
                    .show();
        }
    }
}

@Override
    public void onResume() {
    super.onResume();
    initilizeMap();

    if (googleMap!=null){
        googleMap.addMarker(new MarkerOptions().position(My Point)
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.my_point_marker)));

}
CameraPosition cameraPosition = new CameraPosition.Builder().target(
         new LatLng(xx.xxxxxxx,xx.xxxxxxzoom(9).bearing(0).build();

 googleMap.setOnMapClickListener(this);
 googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
 googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
 googleMap.setMyLocationEnabled(true);
 googleMap.getUiSettings().setZoomControlsEnabled(false);
 googleMap.getUiSettings().setCompassEnabled(true);
 googleMap.getUiSettings().setMyLocationButtonEnabled(true);

 }

MarkerOptions markerOptions = new MarkerOptions()
         .position(theLastPlaceThatTheUserLongClicked)
         .icon(BitmapDescriptorFactory
         .fromBitmap(bitmap));
          haspMap.put(markerOptions, your_data);
         googleMap.addMarker(markerOptions);
   }
 }

提前致谢!

更新

我找到了这个并认为这可能有帮助?

 ...........
  WeakHashMap <Marker, Object> haspMap = new WeakHashMap <Marker, Object>();
 ..........

  MarkerOptions markerOptions = new MarkerOptions()
             .position(point)
             .icon(BitmapDescriptorFactory
             .fromBitmap(bitmap));
              haspMap.put(markerOptions, your_data);
             googleMap.addMarker(markerOptions);
            }
        }

我了解 WeakHashMap 和 haspMap 的使用,但不太确定 your_data 的用途。我找不到对此的解释?

最佳答案

将所有经纬度值存储在列表中,每当用户单击 map 时..并在 onResume() 上遍历完整列表并在 map 中设置存储的经纬度值..

关于android - 退出应用程序或导航到不同的 Activity 时,如何保存手动添加到 google maps v2 的标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489444/

相关文章:

Android App + Library 与 appcompat 版本冲突

android - 抽屉布局在没有导航 Controller 的情况下不起作用

android - 安卓代码注入(inject)

android - 如何在 android 中使用 intent 启动 viber

android - 与 viewpager 和 recyclerview 一起使用时,CollapsingToolbarLayout 的部分内容会粘在顶部

angular - 如何在 angular 2 中动态设置 index.html 中的 Google map 键?

java - Android透明Fragment/GoogleMap

javascript - 点和光标之间的线

javascript - 使用谷歌地图 v3 定位用户位置

javascript - 如何使用 google map api 获得精确位置?