我有一张 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/