百度地图最新版本sdk使用系列(五)-定位功能的实现
2015-05-09 11:04
363 查看
[code]定位功能的核心类是LocationClient和一个回调接口BDLocationListener. 从百度服务器拿到的定位数据(经纬度等)就封装在回调方法onReceiveLocation(BDLocation location)的参数location里面, 我们只需要将其取出展示在map上即可. 详细代码如下:
[code]public class MainActivity extends Activity { private MapView mMapView;// 地图视图 private BaiduMap mBaiduMap;// 地图控制器 setMapStatus(mMapStatusUpdate); private MapStatus mMapStatus;// 地图当前状态 private MapStatusUpdate mMapStatusUpdate;// 地图将要变化成的状态 private Button btn_test;// 测试button public LocationClient mLocationClient = null;// 定位的核心类:LocationClient public BDLocationListener myListener = new MyLocationListener();// 定位的回调接口 private LatLng mCurrentLatLng;// 当前经纬度坐标 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 在使用SDK各组件之前初始化context信息,传入ApplicationContext // 该方法要在setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); init(); // 设置是否允许定位图层,只有先允许定位图层后设置定位数据才会生效 mBaiduMap.setMyLocationEnabled(true); btn_test.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { location(); mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);// 开启卫星图 // 获得地图的当前状态的信息 mMapStatus = new MapStatus.Builder().zoom(18).target(mCurrentLatLng).build(); // 设置地图将要变成的状态 mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus); mBaiduMap.setMapStatus(mMapStatusUpdate);// 设置地图的变化 } }); } private void init() { // 获得地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); // 获得地图控制器 mBaiduMap = mMapView.getMap();// MapView与BaiduMap一一对应 // 定位核心类 mLocationClient = new LocationClient(getApplicationContext()); // 定位回调接口 myListener = new MyLocationListener(); // 测试按钮 btn_test = (Button) findViewById(R.id.test); } /** * 定位 */ private void location() { // 设置mLocationClient数据,如是否打开GPS,使用LocationClientOption类. LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationMode.Hight_Accuracy);// 设置定位模式 option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02 option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000ms option.setIsNeedAddress(true);// 返回的定位结果包含地址信息 option.setNeedDeviceDirect(true);// 返回的定位结果包含手机机头的方向 option.setOpenGps(true);// 打开GPS mLocationClient.setLocOption(option); mLocationClient.registerLocationListener(myListener); } @Override protected void onStart() { location(); mLocationClient.start();// 开启定位请求 super.onStart(); } @Override protected void onResume() { mMapView.onResume(); super.onResume(); } @Override protected void onPause() { mLocationClient.stop();// 停止定位 mMapView.onPause(); super.onPause(); } @Override protected void onDestroy() { mMapView.onDestroy(); super.onDestroy(); } public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { // mapView 销毁后不在处理新接收的位置 if (location == null || mMapView == null) return; //获取服务器回传的当前经纬度 mCurrentLatLng = new LatLng(location.getLatitude(), location.getLongitude()); // 构造定位数据 MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius())// 获取定位精度 .latitude(location.getLatitude())// 获取纬度坐标 .longitude(location.getLongitude())// 获取精度坐标 .build(); mBaiduMap.setMyLocationData(locData);// 设置定位数据 } } }
此demo已上传csdn,下载地址为:
http://download.csdn.net/detail/csdn1027719307/8700107
相关文章推荐
- 百度地图最新版本sdk使用系列(七)-实现定位,poi搜索和导航
- 百度地图最新版本sdk使用系列(四)-开启卫星地图,实时交通图,实现标注覆盖物等功能
- 百度地图最新版本sdk使用系列(六)-搜索周边美食,加油站等,并使用infoWindow展示
- 百度地图最新版本sdk使用系列(八)-获取当前地图中心点的经纬度并计算与当前位置的距离
- 百度地图最新版本sdk使用系列(一)-初识 hello baidumap
- 百度地图最新版本sdk使用系列(二)-修改百度地图的默认中心位置
- 百度地图最新版本sdk使用系列(三)-修改百度地图旋转(平视,俯视),缩放
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- 猛犸代码助手开通官网,最新版本实现程序自动更新升级
- jsp+servlet+jquery 用jquery uploadify最新版本实现多文件上传
- 基于owncloud最新稳定版本9.1.1开发实现了owncloud支持ceph s3作为primary storage功能
- 百度地图定位在Activity的实现<百度地图SDK版本 v3.7.3>
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- Android应用之——最新版本SDK V2.4实现QQ第三方登录
- android使用最新版百度地图实现城市切换和城市poi搜索
- 基于最新版本React Native实现JsBundle预加载,界面秒开优化
- JFreeChart最新版本1.0.8a的研究系列——生成曲线图
- 【iOS百度地图系列_0】百度地图的配置及实现基本地图
- 指定结构体排序字段的STL实现版本(C++ 2011系列)
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)