官方给的3.0Map的集成api说了:
MapView 是 Android View 类的一个子类,它可以帮助您在 Android View 中放置地图,它是应用程序和窗口部件的基本构建类。MapView 作为地图的容器,通过 AMap 对象显示地图。使用 MapView 类,必须重载 Activity 生命周期的所有方法,有 onCreate(),onDestroy(),onResume(),onPause(),onSaveInstanceState()。
另外,如果是在Fragment中集成MapView的话,首先需要将你自己写的Fragment继承SupportMapFragment类,然后同样需要重载所有的生命周期方法。区别在于:
Fragment的onCreate 方法再onCreateView方法之前调用,而Fragment的视图是在onCreateView中初始化的,所以这里需要将MapView的onCreatef(Bundle)方法移到onCreateView方法中进行初始化。
但是,我前期做的时候犯了一个错误,MapView的其他生命周期方法调用位置为都没改,结果app首次进入的时候,高德地图是正常加载的,但是退出后重新进入,app会一直处于黑屏的位置。
后来发现是因为MapView.onDestroy方法调用不对,应该移到Fragment的onDestroyView中,修改后,问题解决。
只能说对Fragment的了解还不是很充足,官方对Fragment中的调用区别也没有明确说明出来,浪费了一天时间。
最后附上源码:
public class MapFragment extends SupportMapFragment implements
AMapLocationListener, LocationSource {
private String TAG = this.getClass().getSimpleName();
private int fragmentId;
private MapView mMapView;
private AMap mAmap;
// 声明AMapLocationClient类对象
private AMapLocationClient mLocationClient;
private AMapLocationClientOption mLocationOption;
// 声明定位回调监听器
public AMapLocationListener mLocationListener;
private A