高德地图fragment 动态加载地图 嵌套问题

来源:互联网 发布:华为电视盒安装软件 编辑:程序博客网 时间:2024/06/05 01:11
一、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了。

原创粉丝点击