当我中规中矩跟着百度官方的指南编写完成后,内心给自己打了个“赞”~
然鹅...运行后却依然是定位在北京?(默认位置)而且也没显示定位图标?加了各种打印都是正常,表示代码有被编译和执行到。
然后找到网友的帖子,说明首次是需要放大地图,并且设置中心点。亲测正解!!!
附上代码:
public class MyLocationListenner implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
//定位位置回调
/**
* MyLocationData 定位数据类,地图上的定位位置需要经纬度、精度、方向这几个参数,所以这里我们把这个几个参数传给地图
* 如果不需要要精度圈,推荐builder.accuracy(0);
* mCurrentDirection 是通过手机方向传感器获取的方向;也可以设置option.setNeedDeviceDirect(true)获取location.getDirection(),
但是这不会时时更新位置的方向,因为周期性请求定位有时间间隔。
* location.getLatitude()和location.getLongitude()经纬度,如果你只需要在地图上显示某个固定的位置,完全可以写入固定的值,
如纬度36.958454,经度114.137588,这样就不要要同过定位sdk来获取位置了
*/
MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())
.direction(mCurrentDirection).latitude(location.getLatitude()).longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);//给地图设置定位数据,这样地图就显示位置了
/**
*当首次定位时,记得要放大地图,便于观察具体的位置
* LatLng是缩放的中心点,这里注意一定要和上面设置给地图的经纬度一致;
* MapStatus.Builder 地图状态构造器
*/
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
MapStatus.Builder builder = new MapStatus.Builder();
//设置缩放中心点;缩放比例;
builder.target(ll).zoom(18.0f);
//给地图设置状态
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
}
}
}