如何在设备旋转时保持地图状态?

问题描述 投票:2回答:2

我有一个嵌套片段,我希望在设备方向改变时保持状态。

它是这样的:

我在嵌套片段中实例化了一个mapView,当设备旋转时,用户必须位于相同的位置。我怎么能做到这一点?

谢谢

java android android-fragments android-mapview
2个回答
1
投票

好的,所以我犯了一个错误。我在片段父级上调用函数setRetainInstance(true),我不应该。

删除该行后,将地图状态保持在设备方向上非常简单。我所要做的就是在onSaveInstanceState上保存一些值,如下所示:

bundle.putDouble("lat", mMap.getCameraPosition().target.latitude);
bundle.putDouble("lon", mMap.getCameraPosition().target.longitude);
bundle.putFloat("zoom", mMap.getCameraPosition().zoom);

然后在onCreate上,我恢复地图状态,如下所示:

bundle.getDouble("lat");
bundle.getDouble("lon");
bundle.getDouble("zoom");

0
投票

你可以像这样使用它,因为CameraPosition类实现了Parcelable

  1. 保存
if (null != mMap) {
   outState.putParcelable("map_camera_position", mMap.getCameraPosition());
}
  1. onCreate()中检索它
if (null != savedInstanceState) {
    mCameraPosition = savedInstanceState.getParcelable("map_camera_position");
}
  1. 设置它来移动相机
if (null != mCameraPosition) {
   mMap.moveCamera(CameraUpdateFactory.newCameraPosition(mCameraPosition));
}
© www.soinside.com 2019 - 2024. All rights reserved.