百度地图 同时提供了 定位SDK
定位SDK 可以单独使用 也可以跟百度地图结合使用
比如获取用户当前所在城市 显示对应城市天气预报
比如 让用户查看附近的好吃好玩的 这些功能都需要定位
定位SDK 已经有了 4.2
通过 demo示例 我们了解到
-
百度定位SDK为我们提供了大体3个功能模块的功能 : 定位
地理围栏 记录当前位置
定位: 获取到用户当前位置的信息
地理围栏: 设置一个区域 当用户靠近 或 在区域中的时候 会提示 回调
记录当前位置 :
若记住当前位置 再次经过的时候会提示
-
百度定位SDK定位 有三种模式
高精度定位模式 : 这种定位模式下,会同时使用网络定位和GPS定位,优先返回最高精度的定位结果
LocationMode.Hight_Accuracy 仅设备模式 : 这种定位模式下,不会使用GPS,只会使用网络定位(Wi-Fi和基站定位)
LocationMode.Device_Sensors 低功耗模式 :
这种定位模式下,不需要连接网络,只使用GPS进行定位,这种模式下不支持室内环境的定位
LocationMode.Battery_Saving
百度返回的定位信息关于地址需要开启使用setIsNeedAddress(boolean)
设置是否要返回地址信息,默认为无地址信息。
-
百度返回的定位信息的坐标有三种类型
返回国测局经纬度坐标系:gcj02
返回百度墨卡托坐标系:bd09
返回百度经纬度坐标系:bd09ll
-
关于设置定时定位的时间间隔说明 (从官网摘抄)
说明:
当所设的整数值大于等于1000(ms)时,定位SDK内部使用定时定位模式。调用requestLocation( )后,每隔设定的时间,定位SDK就会进行一次定位。如果定位SDK根据定位依据发现位置没有发生变化,就不会发起网络请求,返回上一次定位的结果;如果发现位置改变,就进行网络请求进行定位,得到新的定位结果。定时定位时,调用一次requestLocation,会定时监听到定位结果。
当不设此项,或者所设的整数值小于1000(ms)时,采用一次定位模式。每调用一次requestLocation( ),定位SDK会发起一次定位。请求定位与监听结果一一对应。
设定了定时定位后,可以热切换成一次定位,需要重新设置时间间隔小于1000(ms)即可。locationClient对象stop后,将不再进行定位。如果设定了定时定位模式后,多次调用requestLocation(),则是每隔一段时间进行一次定位,同时额外的定位请求也会进行定位,但频率不会超过1秒一次。
将定位SDK 引入自己的项目
} catch (Exception e) {
// TODO: handle exception
}
option.setScanSpan(span);// 设置的扫描间隔,单位是毫秒 (下面有备注)
option.setIsNeedAddress(true);// 设置是否需要地址信息,默认为无地址
// 可以理解为 将封装好的定位参数 设置给 定位对象
mLocationClient.setLocOption(option); 7
设置好定位参数 就可以启动定位了 start方法 (可以使用stop停止)