问题:aMap.animateCamera不起作用,捕获异常Handler sending message to a Handler on a dead thread;
原因:
地图布局的复用造成的,去掉地图布局的复用就行了。
onCreateView中复用造成的问题:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (mapLayout == null) {
mapLayout = inflater.inflate(R.layout.fragment_home_map, null);
mapView = (TextureMapView) mapLayout.findViewById(R.id.mv_home_map_map);
mapView.onCreate(savedInstanceState);
aMap = mapView.getMap();
} else {
if (mapLayout.getParent() != null) {
((ViewGroup) mapLayout.getParent()).removeView(mapLayout);
}
if (mapView == null) {
mapView = (TextureMapView) mapLayout.findViewById(R.id.mv_home_map_map);
}
mapView.onCreate(savedInstanceState);
if (aMap == null){
aMap = mapView.getMap();
}
}
}
解决方案代码,不复用布局:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mapLayout = inflater.inflate(R.layout.fragment_home_map, null);
mapView = (TextureMapView) mapLayout.findViewById(R.id.mv_home_map_map);
mapView.onCreate(savedInstanceState);
aMap = mapView.getMap();
return mapLayout;
}
布局复用导致的问题,定位成功后,更新当前中心点会出现的异常:
aMap.animateCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition(
new LatLng(latitude, longitude),//新的中心点坐标
18, //新的缩放级别
30, //俯仰角0°~45°(垂直与地图时为0)
0 ////偏航角 0~360° (正北方为0)
)));