我正在片段中显示GoogleMap。当我旋转屏幕时,地图会重新加载。在GoogleMaps应用中,地图无法重新加载(地图消失,灰色屏幕并再次显示)
我的代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_map, container,
false);
mMapView = (MapView) v.findViewById(R.id.map);
mMapView.onCreate(savedInstanceState);
mMapView.onResume();
if(savedInstanceState == null){
try {
MapsInitializer.initialize(getActivity().getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
}
if(googleMap == null){
googleMap = mMapView.getMap();
//map settings
googleMap.setMyLocationEnabled(true);
googleMap.setIndoorEnabled(false);
googleMap.setTrafficEnabled(false);
googleMap.getUiSettings().setTiltGesturesEnabled(false);
googleMap.getUiSettings().setMapToolbarEnabled(false);
}
if(savedInstanceState == null) {
Location myLocation = getMyLocation();
if (myLocation != null) {
double myLatitude = myLocation.getLatitude();
double myLongitude = myLocation.getLongitude();
CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(myLatitude, myLongitude)).zoom(12).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
}
return v;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mMapView.onSaveInstanceState(outState);
}
// and ofcouse onResume, OnPause, OnCreated and onLowMemory
我的相机位置保留,但地图不是。重新加载需要时间并且看起来很难看。如何阻止我的地图像Google地图应用一样重新加载?
我看了this question,但我不想禁止改变方向。
答案 0 :(得分:1)
您是否尝试过添加
android:configChanges="orientation|screenSize"
清单中的活动?
它不一定锁定方向,它允许android自己尝试处理配置更改。
如果这不是您要找的,您可以尝试拨打
setRetainInstanceState(true)
初始化片段后,在定位后恢复时会调用数据,但是,由于方向更改会强制Android销毁并重新创建活动,因此GoogleMaps总是需要重新加载。
答案 1 :(得分:0)
我建议你在Manifest文件中的地图活动中将屏幕Orientation设置为portrait。请参阅以下示例。
<activity
android:name=".activity.MapActivity"
android:label="@string/title_activity_map"
android:theme="@style/AppTheme"
android:screenOrientation="portrait"/>
这对我有用