问题描述:Android中百度地图进行定位,如果我们要将当前位置显示到地图上,在使用时我们会用到定位监听器,然后将获得到的位置对BaiduMap对象进行位置上的更新,达到显示当前位置的目的。由于我们在定位后还可能要进行自主的移动,则我们会用一个flag标识是否已经定位到当前的位置。但是在使用flag后,由于第一次定位,BaiduMap可能还未加载成功,导致地图无法移动到我们当前位置。
解决方式:在地图移动成功后再进行flag的修改。
改后的代码:
/*移动到指定位置*/ 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); /*判断baiduMap是已经移动到指定位置*/ if (mBaiduMap.getLocationData()!=null) if (mBaiduMap.getLocationData().latitude==location.getLatitude() &&mBaiduMap.getLocationData().longitude==location.getLongitude()){ isFirstLocate = false; } } MyLocationData.Builder locationBuilder = new MyLocationData.Builder(); locationBuilder.latitude(location.getLatitude()); locationBuilder.longitude(location.getLongitude()); MyLocationData locationData = locationBuilder.build(); mBaiduMap.setMyLocationData(locationData); }
注:在描述中如果出现问题,希望大家能够指正。