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