您当前的位置定位 SDK>Android 定位SDK>类参考

类参考v3.3

LocationClient类

功能:定位SDK的核心类。方法如下:

构造类:

  1. public LocationClient ( Context ) //须在主线程中声明

设置参数:

  1. public void setLocOption ( LocationClientOption )

参数:配置定位SDK,详见LocationClientOption类。 说明:2.x版本以后的定位提供API接口,用以在API运行过程中,进行热切换配置参数。

注册监听函数:

  1. public void registerLocationListener ( BDLocationListener )

参数:详见BDLocationListener类。 说明:当没有注册监听函数时,无法发起网络请求。

注册位置提醒监听事件:

  1. public void registerNotify ( BDNotifyListener mNotify )

开启/关闭:

  1. public void start();
  2. public void stop();

start:启动定位SDK。 stop:关闭定位SDK。调用stop之后,设置的参数LocationClientOption仍然保留。

发起定位:

  1. public int requestLocation()

发起定位,异步获取当前位置。因为是异步的,所以立即返回,不会引起阻塞。定位结果在ReceiveListener的方法OnReceive方法的参数中返回。

需要注意:当定位SDK从定位依据判定,位置和上一次没发生变化,而且上一次定位结果可用时,则不会发起网络请求,而是返回上一次的定位结果。 返回值:

  • 0:正常发起了定位。
  • 1:服务没有启动。
  • 2:没有监听函数。
  • 6:请求间隔过短。 前后两次请求定位时间间隔不能小于1000ms。

请求离线定位:

离线定位功能:用户请求过得基站定位结果会缓存在本地文件。

离线定位结果只缓存基站定位结果,没有Wi-Fi定位结果,所以定位精度较差。

离线定位结果没有地址信息。

  1. public int requestOfflineLocation()

发起离线定位,异步获取当前位置。因为是异步的,所以立即返回,不会引起阻塞。定位结果在ReceiveListener的方法OnReceive方法的参数中返回。

返回值:

  • 0:正常发起了定位。
  • 1:服务没有启动。
  • 2:没有监听函数。

取消监听函数:

  1. public void unRegisterLocationListener(BDLocationListener listener)

取消监听函数。

位置提醒相关函数:

  1. //注册位置提醒监听事件
  2. public void registerNotify(BDNotifyListener mNotify)

  1. //取消位置提醒监听事件
  2. public void removeNotifyEvent(BDNotifyListener mNotify)

LocationClientOption类

该类用来设置定位SDK的定位方式。

设置是否启用缓存定位

  1. //true表示禁用缓存定位,false表示启用缓存定位。
  2. public void disableCache(boolean)

设置打开GPS

  1. setOpenGps( boolean )

设置是否打开gps,使用gps前提是用户硬件打开gps。默认是不打开gps的。

设置是否需要地址信息

设置是否要返回地址信息,默认为无地址信息。

  1. public void setAddrType ( String )

String 值为 all时,表示返回地址信息。

其他值都表示不返回地址信息。

设置坐标类型:

设置返回值的坐标类型。

  1. public void setCoorType ( String )

我们支持返回若干种坐标系,包括国测局坐标系、百度坐标系,需要更多坐标系请联系我们,需要深度合作。目前这些参数的代码为。因此需要在请求时指定类型,如果不指定,默认返回百度坐标系。注意当仅输入IP时,不会返回坐标。目前这些参数的代码为

  • 返回国测局经纬度坐标系 coor=gcj02
  • 返回百度墨卡托坐标系 coor=bd09
  • 返回百度经纬度坐标系 coor=bd09ll

百度手机地图对外接口中的坐标系默认是bd09ll,如果配合百度地图产品的话,需要注意坐标系对应问题。

有关坐标系的更多问题,请看常见问题

设置产品线名称:

  1. public void setProdName ( String )

设置产品线名称。强烈建议您使用自定义的产品线名称,方便我们以后为您提供更高效准确的定位服务。

设置定位时间间隔:

  1. public void setScanSpan ( int ) //设置定时定位的时间间隔。单位ms

说明:

  • 当所设的整数值大于等于1000(ms)时,定位SDK内部使用定时定位模式。调用requestLocation( )后,每隔设定的时间,定位SDK就会进行一次定位。如果定位SDK根据定位依据发现位置没有发生变化,就不会发起网络请求,返回上一次定位的结果;如果发现位置改变,就进行网络请求进行定位,得到新的定位结果。定时定位时,调用一次requestLocation,会定时监听到定位结果。
  • 当不设此项,或者所设的整数值小于1000(ms)时,采用一次定位模式。每调用一次requestLocation( ),定位SDK会发起一次定位。请求定位与监听结果一一对应。
  • 设定了定时定位后,可以热切换成一次定位,需要重新设置时间间隔小于1000(ms)即可。locationClient对象stop后,将不再进行定位。如果设定了定时定位模式后,多次调用requestLocation(),则是每隔一段时间进行一次定位,同时额外的定位请求也会进行定位,但频率不会超过1秒一次。

设置优先级:

  1. public void setPriority( int )

设置定位方式的优先级。目前定位SDK的定位方式有两类:一是使用GPS进行定位。优点是定位准确,精度在几十米,缺点是第一次定位速度较慢,甚至需要2、3分钟。二是使用网络定位。优点是定位速度快,服务端只需8ms,考虑到网速的话,一般客户端3秒左右即可定位,缺点是没有gps准确 ,精度在几十到几百米。为了方便用户,我们提供了有两个整型的项:LocationClientOption.GpsFirst 以及 LocationClientOption.NetWorkFirst:

  • GpsFirst:当gps可用,而且获取了定位结果时,不再发起网络请求,直接返回给用户坐标。这个选项适合希望得到准确坐标位置的用户。如果gps不可用,再发起网络请求,进行定位。
  • NetWorkFirst:即时有gps,而且可用,也仍旧会发起网络请求。这个选项适合对精确坐标不是特别敏感,但是希望得到位置描述的用户。

设置POI个数:

  1. public void setPoiNumber( int )

设置最多可返回的POI个数,默认值为3。由于POI查询比较耗费流量,设置最多返回的POI个数,以便节省流量。

设置POI查询距离:

  1. public void setPoiDistance( float )

设置查询范围,默认值为500,即以当前定位位置为中心的半径大小。

设置是否需要POI的电话地址等详细信息:

  1. public void setPoiExtraInfo( boolean )

设置是否返回POI的电话和地址等详细信息。默认值为false,即不返回POI的电话和地址信息。

设置位置提醒接口:

  1. public void registerNotify( BDNotifyListener mNotify )

LocationClient注册位置提醒监听事件

  1. public void removeNotifyEvent( BDNotifyListener mNotify )

LocationClient取消位置提醒监听事件

设置是否启用缓存设定说明:

  1. public void disableCache( boolean )

LocationClientOption;true表示禁用缓存定位,false表示启用缓存定位

BDLocation类

封装了定位SDK的定位结果,在BDLocationListener的onReceive方法中获取。通过该类用户可以获取error code,位置的坐标,精度半径等信息

获取error code:

  1. public int getLocType ( )

返回值:

  • 61 : GPS定位结果
  • 62 : 扫描整合定位依据失败。此时定位结果无效。
  • 63 : 网络异常,没有成功向服务器发起请求。此时定位结果无效。
  • 65 : 定位缓存的结果。
  • 66 : 离线定位结果。通过requestOfflineLocaiton调用时对应的返回结果
  • 67 : 离线定位失败。通过requestOfflineLocaiton调用时对应的返回结果
  • 68 : 网络连接失败时,查找本地离线定位时对应的返回结果
  • 161: 表示网络定位结果
  • 162~167: 服务端定位失败。

如果不能定位,请记住这个返回值,并到我们的hi群或者贴吧中交流。若返回值是162~167,请发送邮件至mapapi@baidu.com反馈。

获取经纬度坐标:

  1. public double getLatitude ( ) //获取维度
  2. public double getLongitude ( ) //获取经度

获取定位的坐标。坐标的类型在setLocationClientOption方法中设定。

获取定位精度:

  1. public boolean hasRadius ( ) //判断是否有定位精度半径
  2. public float getRadius ( ) //获取定位精度半径,单位是米

获取文字描述的地址(反地理编码):

  1. public String getAddrStr ( ) //获取反地理编码

只有使用网络定位的情况下,才能获取当前位置的反地理编码描述。

自定位SDK2.6版本之后,支持获取省/市/区分级地理信息:

  1. public String getProvince ( ) //获取省份信息
  2. public String getCity ( ) //获取城市信息
  3. public String getDistrict ( ) //获取区县信息

获取POI信息:

  1. public boolean hasPoi()
  2. public String getPoi() //获取poi信息

hasPoi()为false,则表明附近没有查询到相应的poi信息。poi字串JSON格式的字符串。 字串示例: {"p":[{"addr":"xx路xx号","y":"40.2234","dis":"324.3","x":"116.3424","name":"xx酒店","tel":""},{"y":"40.2234","dis":"324.3","x":"116.3424","name":"xx酒店"}]}

BDLocationListener接口类

作用:获取定位结果,获取POI信息。该类有2个方法:

获取定位结果:

  1. public interface BDLocationListener {
  2. public void onReceiveLocation ( BDLocation location );
  3. public void onReceivePoi(BDLocation poiLocation);
  4. }

获取定位结果的接口。用户自己实现这个接口后,监听定位结果。 获取POI信息的接口。用户自己实现这个接口后,监听poi的相关结果。

BDNotifyListener 类

作用:位置提醒接口类,用于设定位置提醒点,以及实现监听函数。

设定位置提醒点

  1. //用于设定位置提醒的点的具体信息,4个参数依次为:纬度,经度,半径,坐标类型
  2. public void SetNotifyLocation(double latitude, double longitude ,float radius, String coorType)

监听位置提醒事件

  1. public void onNotify(BDLocation mlocation, float distance){
  2. //位置提醒监听事件具体实现.
  3. //mlocation表示当前位置,distance是当前坐标中心点与设定位置提醒的坐标点之间的距离值。
  4. }