[Android百度地图SDK开发] (二)地图交互之定位
这一篇主要说下如何定位并且地图自动移动到当前位置
在上一篇博文中http://blog.csdn.net/leejizhou/article/details/47254811已经说了如何配置环境与第一次运行,*由于上一篇博文中下载的是单一的百度地图SDK,这次我们需要用定位相关,但是百度地图SDK是不包含定位相关的,所以还要下载定位的SDK…
为了以后的开发方便大家最好在下载SDK的时候进到选择界面把未来可能要用到的功能都勾选上,然后点击开发包进行下载,下载地址 http://lbsyun.baidu.com/sdk/download?selected=location
这样解压后,就会获得一个完整的开发SDK
把armeabi和BaiduLBS_android.jar直接放到libs就OK了
进入主题:
关于定位的核心代码
a.定位的初始化
// 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
// 定位初始化
mLocClient = new LocationClient(this);
//设置监听
mLocClient.registerLocationListener(myListener);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);// 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000);
mLocClient.setLocOption(option);
//开始定位
mLocClient.start();
b.定位监听的实现
public class MyLocationListenner implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
//保存当前位置
doublex=location.getLatitude();
doubley=location.getLongitude();
// 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);
}
}
public void onReceivePoi(BDLocation poiLocation) {
}
}
c.更换定位点图标
mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo);
mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker));
d.更换定位模式
定位有四种模式,普通 跟随 罗盘,具体效果自己实践 : )
//跟随模式
mCurrentMode = LocationMode.FOLLOWING;
mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker));
本例详细源码:
activity_main
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:l