问题描述:地图无法跳转到当前位置
原代码:
private void navigateTo(BDLocation location){ if (isFirstLocate){ LatLng ll = new LatLng(location.getLatitude(),location.getLongitude()); MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);
//第一次更新地图,移动到当前位置 mBaiduMap.animateMapStatus(update); update = MapStatusUpdateFactory.zoomTo(16f);
//第二次更新地图 mBaiduMap.animateMapStatus(update) isFirstLocate = false; } MyLocationData.Builder locationBuilder = new MyLocationData.Builder(); locationBuilder.latitude(location.getLatitude()); locationBuilder.longitude(location.getLongitude()); MyLocationData locationData = locationBuilder.build(); mBaiduMap.setMyLocationData(locationData); }
问题原因第二次更新会覆盖第一次更新,导致第一次更新被没有被执行
改后的代码:
private void navigateTo(BDLocation location){ if (isFirstLocate){ if (baiduMap.getLocationData() != null){ if (baiduMap.getLocationData().latitude == location.getLatitude() && baiduMap.getLocationData().longitude == location.getLongitude()){ isFirstLocate = false; } } LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll); baiduMap.animateMapStatus(update); update = MapStatusUpdateFactory.zoomBy(5f);
//baiduMap移动到指定位置后,再进行第二次更新 if (baiduMap.getLocationData() != null){ if (baiduMap.getLocationData().latitude == location.getLatitude() && baiduMap.getLocationData().longitude == location.getLongitude()){ baiduMap.animateMapStatus(update); isFirstLocate = false; } } }