Я не думаю, что вы можете, но вы можете сохранить ваши CameraPosition
, который имеет вашу позицию/Zoom/угол ...
http://developer.android.com/reference/com/google/android/gms/maps/model/CameraPosition.html
так что вы можете написать функцию в вашем onDestroy
который получает CameraPosition
со своей карты и сохраните ее в своем SharedPreferences
. В вашем onCreate()
вы воссоздаете свой CameraPosition
с SharedPreferences
(после того, как ваша карта инстинктивна).
// somewhere in your onDestroy()
@Override
protected void onDestroy() {
CameraPosition mMyCam = MyMap.getCameraPosition();
double longitude = mMyCam.target.longitude;
(...)
SharedPreferences settings = getSharedPreferences("SOME_NAME", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putDouble("longitude", longitude);
(...) //put all other values like latitude, angle, zoom...
editor.commit();
}
в вашем onCreate()
SharedPreferences settings = getSharedPreferences("SOME_NAME", 0);
// "initial longitude" is only used on first startup
double longitude = settings.getDouble("longitude", "initial_longitude");
(...) //add the other values
LatLng startPosition = new LatLng() //with longitude and latitude
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(startPosition) // Sets the center of the map to Mountain View
.zoom(17) // Sets the zoom
.bearing(90) // Sets the orientation of the camera to east
.tilt(30) // Sets the tilt of the camera to 30 degrees
.build(); // Creates a CameraPosition from the builder
создать новую cameraPosition и оживить его. убедитесь, что карта установлена в этой точке
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
Сохранение 'CameraPosition' в качестве объекта parcelable во время' onSaveInstanceState() ', похоже, будет работать для изменения ориентации, когда оно вызывается, но оно не вызывается, когда пользователь выходит, касаясь кнопки« Назад ». Там я получаю 'onPause()', 'onStop()', 'onDestroy()' - ни один из которых не дает мне доступ к Bundle состояния экземпляра. Я просто узнаю о государственном управлении, поэтому простите меня, если я ошибаюсь. –
Я что-то упустил? нет гарантии, что onDestroy будет вызван, поэтому лучше сохранить данные в методе onPause. Точно так же хорошей практикой является получение данных в onResume, а не в onCreate. –
рядом с вами 'onDestroy'-won't-be-called-возражение, это не будет иметь никакого значения. Мы использовали onCreate/onDestroy, потому что мы только хотели воссоздать mapstate при запуске приложения. Однако перемещение блоков в 'onResume' и' onPause' будет работать тоже – longilong