一、fragment中动态加载地图
private void initSupportMapFragment() {
CameraPosition LUJIAZUI = new CameraPosition.Builder()
.target(new LatLng(31.239879, 121.499674)).zoom(18).bearing(0)
.tilt(70).build();
AMapOptions aOptions = new AMapOptions();
aOptions.zoomGesturesEnabled(false);
aOptions.camera(LUJIAZUI);
smf = SupportMapFragment.newInstance(aOptions);
getChildFragmentManager().beginTransaction()
.add(R.id.pa_ly_location_now_map, smf, "map").commit();
}
smf = SupportMapFragment.newInstance(aOptions);
主要代码 ,实例后直接smf.getmap(),会为空,估计在实例的时候有异步的方法。
官方的例子是放在不同的生命周期内,如initSupportMapFragment放在oncreate中,initAmap放在onresume中;
若是在一个fragment中添加地图应该使用
getChildFragmentManager().beginTransaction().add(R.id.pa_ly_location_now_map, smf, "map").commit()
添加到fragment中
getChildFragmentManager()
private void initAMap() {
if (aMap == null) {
aMap = smf.getMap();
}
aMapListener = new MyAmapListener(aMap, this.getActivity(), aMapHandler);
aMap.moveCamera(CameraUpdateFactory.zoomTo(AMapUtils.INITZOOM));
aMap.setOnInfoWindowClickListener(aMapListener);
aMap.setOnMarkerClickListener(aMapListener);
aMap.setOnMapLongClickListener(aMapListener);
aMap.setOnMapClickListener(aMapListener);
aMap.setOnMapLoadedListener(aMapListener);
UiSettings aMapUiSet = aMap.getUiSettings();
aMapUiSet.setZoomControlsEnabled(true);
aMapUiSet.setMyLocationButtonEnabled(false);
aMapUiSet.setLogoPosition(AMapOptions.LOGO_POSITION_BOTTOM_RIGHT);
aMayLayOutUtils = new AMapLayoutUtils(aMap);
printLog("initAMap地图缩放级别" + aMap.getCameraPosition().zoom);
}
二、将带地图的fragment添加到activity中
// 若使用getInstance返回一个静态的实例会报
// java.lang.IllegalStateException: Activity has been destroyed
// 不明白,
transaction.replace(R.id.pa_ly_main_replace,new BaiduLocationFragment(), item + "");
正如注释说的,可能是地图在不用把父类也给destory了。