相信很多的朋友都有在APP中實現定位的需求,今天我就再次超炒冷飯,為大家獻上國內開發者常用到的三種定位方式。它們分別為GPS,百度和高德,慣例先簡單介紹下定位的背景知識。
什么是GPS定位、基站定位和Wi-Fi定位?
1、GPS定位:根據設備GPS芯片和GPS衛星實現定位,GPS定位在室內是不可以使用的。GPS定位精度和芯片本身以及實際使用環境有關,一般情況下,GPS定位精度在10m左右。
2、基站定位:根據設備獲取的基站信息實現定位,基站定位精度一般不受使用環境影響,主要和基站的覆蓋半徑有關。基站定位服務精度目前在200m左右。
3、Wi-Fi定位:根據設備獲取的Wi-Fi的信息進行定位,Wi-Fi定位精度一般不受使用環境影響,主要和Wi-Fi半徑,密度有關。Wi-Fi定位精度目前在20m左右。
目前智能手機都內置了GPS芯片,相對應的各個手機系統廠商也開放了對外的GPS接口。但是由於GPS受外界因素影響比較大,一般的APP也都是室內使用,所以嚴重影響到了GPS搜星的數量。不過以前在外包公司接手過這么一個項目,主要面向室外的騎行愛好者使用,滿足他們騎行路線的繪制。面對這樣一個需求,GPS定位是最靠譜的選擇了,但是傷不起的耗電量呀。
所以一般比較靠譜的方式,就是使用百度高德這些企業為開發者提供的成熟方案,可以選擇混合定位的方式以應對APP復雜的實際使用情況。混合定位就是使用以上三種定位技術,選擇最優的方式去獲取當前的地理位置。下面來介紹下今天為大家帶來的簡單實踐。
一、GPS定位
沒有特別的業務需求,請慎用GPS定位,選用NETWORK_PROVIDER是個不錯的選擇。另外,大家有沒有發注意到,通過GPS可以獲取當前時間,在獲取不到准確時間的時候是個不錯的選擇。
2、百度定位
百度定位的location里包含了很多的信息,足以應付我們工作的需要了。百度定位Jar包大小180Kb,相對來說還是可以接受的。百度的三種定位策略也正好是對應上述我們背景介紹的三種定位技術。
三、高德定位
高德定位回調的位置信息也是比較豐富的,而且依賴包大小140kb,一般我工作中定位都是用高德。
備注:通過Android系統的LocationManager去定位也是滿靠譜的,室外需求使用GPS provider,室內使用Network provider;定位的經度和效率也是可以接受的,而且還不用依賴第三方包,不會增加程序的體積。但是很多業務情形下,我們不止想得到簡單的經緯度信息,我們還需要城市、郵編、具體的位置等信息。
代碼地址:https://github.com/JackCho/LocationDemo
如果覺得對你有所幫助,歡迎大家訂閱我的微信公眾賬號——Android干貨分享(ID:android_share)。下面是微信的二維碼,為你提供及時高質的Android干貨。技術交流QQ群:318588906,歡迎大家加群,共同探討下Android和Java技術,一起壯大我們的微信干貨分享社區。