【问题标题】:How to keep map state on device rotation?如何在设备旋转时保持地图状态?
【发布时间】:2013-04-27 23:08:19
【问题描述】:

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

是这样的:

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

谢谢

【问题讨论】:

    标签: java android android-fragments android-mapview


    【解决方案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");
    

    【讨论】:

      【解决方案2】:

      你可以这样使用它,因为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));
      }
      

      【讨论】:

        猜你喜欢
        • 2014-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        相关资源
        最近更新 更多