为何Android 定位SDK获取不到定位的速度[getSpeed()]、角度[getBearing()]、海拔[getAltitude()]?

速度、角度和海拔数据来源自哪里?

精准的速度(Speed)、角度(Bearing)、海拔(Altitude)数据来自设备GPS模块,也就是当GPS模块正常工做状况下,且设备在移动时会返回以上三种数据。网络

因此当以上三种数据返回负数说明GPS状态如今是太好的,没法准确计算结果。若是返回0意味着GPS状态可用,但设备没有移动。ide

为什么高精度定位模式不能每次都返回这三项数据?

在高精度定位模式下会采用GPS定位混合网络定位的方式。开启持续高精度定位,若是此时GPS模块没有正常工做是没法正常返回角度、速度、海拔数据的,但网络定位生效,能够有效的返回经纬度信息。接口

若是您须要依赖速度(Speed)、角度(Bearing)、海拔(Altitude)三种数据作业务上的判断,您能够采用仅设备定位模式。仅设备定位模式会彻底依赖GPS定位。it

但仅设备定位模式只能在室外环境生效,这是因为GPS模块只有在开阔场所才能够有效的链接卫星计算位置,这点须要您注意。io

自Android 定位 SDK V3.1.0版本开始,AMapLocationClientOption会有这样一个接口:setSensorEnable(boolean sensorEnable);这个接口控制是否使用设备传感器,默认关闭,能够打开。当上述接口被设置为true后,定位的Client将会采用设备传感器计算海拔,角度和速度。意味着高精度定位模式下也能够返回速度、角度、海拔数据。class