按照百度官方SDK接入百度地图SDK后,进行地图定位的时候,缩小界面,显示出了定位图标,但是打开地图界面,一直显示天安门的位置。
/**
* 初始化定位内容
*/
private void initLocate() {
//定位初始化
mLocationClient = new LocationClient(getApplicationContext());
//通过LocationClientOption设置LocationClient相关参数
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000);
//设置locationClientOption
mLocationClient.setLocOption(option);
//注册LocationListener监听器
MyLocationListener myLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(myLocationListener);
//开启地图定位图层
mLocationClient.start();
}
public class MyLocationListener extends BDAbstractLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
//mapView 销毁后不在处理新接收的位置
if (location == null || mMapView == null) {
return;
}
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(location.getDirection())
.latitude(location.getLatitude())
.longitude(location.getLongitude())
.build();
LogUtils.e(TAG, "定位的位置为 " + locData.latitude + " 经度 = "
+ locData.longitude);
LogUtils.e(TAG, location.getLocType() + " 定位结果码为 " + location.getLocTypeDescription());
mBaiduMap.setMyLocationData(locData);
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()));
}
}
以上是代码,重点如下:
1、
创建这个对象的时候,上下文通过使用 getApplicationContext() 获取上下文。但是本人更改之后,没起作用,不过也没有修改。感觉这个上下文和activity的上下文是一样的。
2、在监听器中,添加红色框选中的代码,就可以定位到当前所在位置了。