使用百度地图定位功能重要的几个类:

LocationClient:定位的主力

LocationClientOption:设置定位参数包括:定位模式(单次定位,定时定位),返回坐标类型,是否打开GPS等等

LocationData:定位信息,包括:accuracy 定位精度、direction 定位时的gps角度、latitude 维度、longitude 经度、satellitesNum 卫星数目、speed gps定位时的速度

BDLocationListener:监听定位,LocationClient.setListener(BDLocationListener)。BDLocationListener接口有2个方法需要实现:接收异步返回的定位结果和接收异步返回的POI查询结果,参数均是BDLocation类型参数。

BDLocation:触发BDLocationListener时得到的参数。

MyLocationOverlay:显示用户当前位置的Overlay,通过覆盖方法dispatchTap()处理当前位置的点击事件。MyLocationOverlay不绑定位置数据来源,可通过 setData(LocationData)方法设置位置信息,通过setMarker(marker)更新位置图标(marker为null则使用默认图标)。

步骤:

定位init:

mLocClient = new LocationClient( this );        locData = new LocationData();        mLocClient.registerLocationListener( myListener );//myListener为后面步骤完成监听的MyLocationListenner类        LocationClientOption option = new LocationClientOption();        option.setOpenGps(true);//打开gps        option.setCoorType("bd09ll");     //设置坐标类型        option.setScanSpan(5000);        mLocClient.setLocOption(option);        mLocClient.start();

设置图层:

//定位图层初始化myLocationOverlay = new LocationOverlay(mMapView);//设置定位数据    myLocationOverlay.setData(locData);//也可调用myLocationOverlay.getMyLocation()获取当前图层的坐标信息    //添加定位图层mMapView.getOverlays().add(myLocationOverlay);//开启定位图层接受方向数据功能,当定位数据中有方向时,定位图标会旋转至该方向  or disableCampass()myLocationOverlay.enableCompass();//修改定位数据后刷新图层生效mMapView.refresh();

定位动作:

mLocClient.requestLocation();

定位完成后由图层设置图标:

myLocationOverlay.setMarker(marker);    //修改图层,需要刷新MapView生效    mMapView.refresh();

完成监听:

public class MyLocationListenner implements BDLocationListener {            @Override        public void onReceiveLocation(BDLocation location) {            if (location == null || isLocationClientStop)                return ;            locData.latitude = location.getLatitude();            locData.longitude = location.getLongitude();            //如果不显示定位精度圈,将accuracy赋值为0即可            locData.accuracy = location.getRadius();            locData.direction = location.getDerect();            //更新定位数据            myLocationOverlay.setData(locData);            //更新图层数据执行刷新后生效            mMapView.refresh();                    }                public void onReceivePoi(BDLocation poiLocation) {            if (poiLocation == null){                return ;            }        }    }

图层自定义:

//继承MyLocationOverlay重写dispatchTap实现点击处理  public class LocationOverlay extends MyLocationOverlay{  public LocationOverlay(MapView mapView) {  super(mapView);  // TODO Auto-generated constructor stub  }  @Override  protected boolean dispatchTap() {  // TODO Auto-generated method stub  //处理点击事件    return true;  }    }


更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. 使用JTDS连接sqlserver数据库
  4. 【Storage】数据存储概述
  5. Android(安卓)UI美化之Shape Drawable的使用
  6. Android(安卓)给CheckBox设置背景
  7. 安卓的简单笔记
  8. android:PopupWindow的使用
  9. 【Android】MediaPlayer使用方法简单介绍

随机推荐

  1. Android中Selector的用法
  2. android自定义view属性
  3. Android(Lollipop/5.0) Material Design(
  4. Android(安卓)使用Android(安卓)Studio +
  5. android ellipsize 属性详解
  6. android中用Spannable在TextView中设置超
  7. android ui界面设计参数讲解
  8. Android(安卓)TextView常用属性介绍Andro
  9. Android(安卓)数据的读取与写入2
  10. Android之screenOrientation属性