其实百度地图定位到设备当前位置还是比较简单的。首先是定位初始化以及设定地图配置。

private LocationClient mLocationClient;//定位的客户端private MyLocationListener mMyLocationListener;//定位的监视器private LocationMode mCurrentMode = LocationMode.NORMAL;//当前定位的模式
// 第一次定位,boolean        isFristLocation = true;        // 定位初始化        mLocationClient = new LocationClient(this);        mMyLocationListener = new MyLocationListener();    mLocationClient.registerLocationListener(mMyLocationListener);        // 设置定位的相关配置        LocationClientOption option = new LocationClientOption();        option.setOpenGps(true);// 打开gps        option.setCoorType("bd09ll"); // 设置坐标类型        option.setScanSpan(1000);//每隔一秒进行定位        mLocationClient.setLocOption(option);        mLocationClient.start();//注意,不可丢失

注意:mLocationClient.start();不要忘记。若是不要的话,定位是不能成功的,只能显示地图界面而定位失败。

其中MyLocationListener类主要是实现定位监听,这里是以一个内部类的形式实现,具体代码如下:

public class MyLocationListener 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);            // 设置自定义图标BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory       .fromResource(R.drawable.navi_map_gps_locked);MyLocationConfiguration config = new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker);            mBaiduMap.setMyLocationConfigeration(config);            // 第一次定位时,将地图位置移动到当前位置            if (isFristLocation)            {                isFristLocation = false;LatLng ll = new LatLng(location.getLatitude(),                        location.getLongitude());MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);                mBaiduMap.animateMapStatus(u);            }        }    }

重写onReceiveLocation()方法,首先构造并设置定位数据;设置图标以及显示模式,并设定配置。判断是否为首次定位,若为则将地图移至当前位置。

定位是比较耗电的,所以在Activity进入到相应进程的时候,MapView也要进入相应进程,而且在执行onDestroy()方法时要销毁定位和关闭定位图层。

@Override      protected void onDestroy() {          super.onDestroy();          //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理          // 退出时销毁定位        mLocationClient.stop();        // 关闭定位图层        mBaiduMap.setMyLocationEnabled(false);        mMapView.onDestroy();        mMapView = null;    } 

最后的显示结果为:

更多相关文章

  1. Android中的数据库——SQLite
  2. Sqlite3 增删改查操作实例
  3. Android(安卓)ListView实现通讯录的例子
  4. Android(安卓)MediaPlayer播放prepareAsync called in state 8解
  5. 教你做android 上的google map 地图
  6. Android数据储存之SharedPreferences
  7. Activity之SharedPreferences探究
  8. Android开发:高德地图通过经纬度反编译其位置名称
  9. Android(安卓)表单模拟,文件上传!

随机推荐

  1. 用Asp与XML实现交互的一个实例源码
  2. 不同浏览器对XML的解析是不同的
  3. cdata标签如何使用
  4. xml中常见的四种解析方式是什么?
  5. 关于html嵌入xml数据岛如何穿过树形结构
  6. XPath是什么
  7. 四种使用dom4j读取xml文件的方式
  8. xml没有代码提示的解决方法
  9. XSLT是什么以及有什么用
  10. 有关XML解析中DOM解析的详细介绍