这两天稍微研究了一下百度地图,先做一个简单的总结。
首先照着百度地图API文档把HelloBaiduMap之前的步骤搞定,内容比较简单略过。
接下来,要实现百度地图的定位功能了。
由于百度将定位的API独立出来了,首先需要导入相关的jar包以及so文件,由于后面还要做一个导航的功能,所以我下载的SDK如下:
定位需要用到的几个类:
LocationClient mLocClient;
public MyLocationListenner myListener = new MyLocationListenner();
private LocationMode mCurrentMode;
BitmapDescriptor mCurrentMarker;
MyLocationListenner代码如下:
/**
* 定位SDK监听函数
*/
public class MyLocationListenner implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// map view 销毁后不在处理新接收的位置
if (location == null || mMapView == null)
return;
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(),
location.getLongitude());
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(u);
if(location.getAddrStr() != null && !location.getAddrStr().equals("")){
locText.setText(location.getAddrStr());
}else{
String addr = location.getLatitude() + "";
locText.setText(addr);
}
}
}
我们要在一开始就进行定位,onCreate方法添加以下代码:
<span style="white-space:pre"> </span>mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
// 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
mBaiduMap.setOnMapClickListener(listener);
// 定位初始化
mLocClient = new LocationClient(this);
mLocClient.registerLocationListener(myListener);
LocationClientOption option = new LocationClientOption();
//高精度定位模式
option.setLocationMode(com.baidu.location.LocationClientOption.LocationMode.Hight_Accuracy);
option.setOpenGps(true);// 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(0);
mLocClient.setLocOption(option);
mLocClient.start();
嗯,可以看到地图定位到我当前的位置了。顺便提一下百度给我们提供了几种定位模式,我选用了高精度模式,即使用gps定位。另外还有其他的定位模式,可以自行查询百度地图API。该方法是在定位SDK5.0版本添加的。