在上一篇文章中,已經可以看到默認的百度地圖,那就說明我們的操作是正確的,申請的密鑰和引入地圖SDK是沒有問題的,接下來就是按照自己的業務需求來使用百度地圖,
百度地圖可以設定顯示出不同的地圖型別,有普通地圖(默認的)、衛星地圖、空白圖,這三種在上一篇推文中進行了演示,可以根據自己的需求看應該使用那種,
其實百度地圖可以做的操作還是很多的,比如顯示手機的實時定位資訊,繪制點,繪制線,添加標記和資訊框等,那么我們就來看看如何實作實時的位置資訊顯示,
顯示實時位置資訊
目前我們使用的手機都自帶GPS定位功能,可以在環境空曠不受干擾或者有運行商或wifi網路的情況下,獲取到經緯度衛星坐標,
Android定位SDK,它支持全球定位,能夠精準的獲取經緯度資訊,
目前在國內獲得的坐標系型別有三種:
- 國測局坐標
- 百度墨卡托坐標
- 百度經緯度坐標
在海外地區,只能獲取到WGS84坐標,我們在開發程序中需要注意,每個地方獲取到的坐標對應的坐標系可能不一樣,如果開發業務有海外的需求,那么需要提前做好坐標的轉換作業,否則可能會影響正常的業務邏輯,
定位SDK默認輸出GCJ02坐標,地圖SDK默認輸出BD09II坐標,
目前下載的最新地圖SDK,需要選中定位SDK,咱們教程剛開始就選擇的是全量定位,也就是說目前可以直接使用操作代碼獲取到經緯度,可以實作實時定位的功能,
1、配置AndroidManifest.xml檔案
在AndroidManifest.xml檔案中需要提前加入對應的權限申請,這里和之前講解的一樣,需要申請網路定位和GPS定位的權限,如果目標主機的Android版本比較高,則需要動態進行申請(見上一篇推文),
<!-- 這個權限用于進行網路定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 這個權限用于訪問GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
接著還需要在此檔案中宣告定位的service組件,這個很重要,如何沒有做申請,定位SDK是無法獲取到GPS資訊的,
<service android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote"/>
2、開啟地圖定位圖層,構造地圖資料
百度地圖的定位功能是在定位圖層中的,默認是關閉狀態,需要在代碼中手動進行打開,只要打開定位圖層,那么后期關于實時定位的顯示、標記點、線、面等在地圖上就可以呈現出來,
mBaiduMap.setMyLocationEnabled(true);
百度地圖獲取定位資訊是通過繼承抽象類BDAbstractListener并重寫其onReceieveLocation方法來獲取定位資料,并將其傳給MapView的,
其實說白了就是重寫它后,如果內置的定位芯片或網路定位獲取到GPS資訊會通過重寫后的方法獲取到,此時我們就可以在方法中獲取到我們業務所需要的經緯度資訊,

3、通過LocationClient發起定位
在OnCreate()方法中,通過實體化mLocationClient變數,并給其賦初始化,讓其開始接收衛星資訊,其中要注意的是,需要對mLocationClient設定引數資訊,引數資訊就是實體化LocationClientOption的具體資訊,
LocationClientOption中包括是否開啟GPS,多長時間接收一次等細節變數,
這里有個坑
目前根據地圖SDK給的代碼,對引數只設定了開始GPS,設定坐標型別和設定定位的間隔時間,是無法獲取到坐標資訊的,這里需要到定位SDK教程中,仔細閱讀其關于如何宣告設定LocationClientOption類,你就會發現其實可設定的內容很多,你可以根據自己的業務需求來進行調整,
下面代碼是我已經驗證成功可以獲取到時候定位資訊的,需要提前宣告一個初始打開的變數,用于在首次定位的時候是否將地圖顯示在定位位置處,


上面圖片就是所有的邏輯代碼,建議你按照上面的邏輯來操作,會得到實時的百度地圖坐標,百度地圖官網的教程只能算是參考,主要把一些基本概念介紹清楚了,但是如何新人只按照他那個進行操作,是很出現結果的(我就是在這里被坑慘了,一直除錯不出來),
這里還可以調整其定位點的光圈大小,定位模式,是否開啟方向,設定自定義定位圖示,精度圈填充顏色以及精度圈邊框顏色5個屬性,這些可以參考百度官方教程,上面說的很詳細,
下面圖片是成功運行的情況,

對于一些官方的教程,有時候不能完全信,你要綜合考慮,如果按照官方的教程來編碼,出現不了你想要的結果,那么很有可能是教程沒有及時更新或者沒有給你交代清楚,那么此時就需要去互聯網上找找解決方案,看是否別人也遇到了這個問題,是否有解決辦法,自己多上手操作操作,就好了,
今天的分享就到這里,我們下期再會,
時間有點晚了,洗洗睡了,明天還得起床去打工,加油 打工人
小寄語
人生短暫,我不想去追求自己看不見的,我只想抓住我能看的見的,
原創不易,給個關注,
我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點贊、轉發 謝謝,
作者:阿輝 關注我:微信掃描下面二維碼,6T編程資料免費送, 微信公眾號:Andy阿輝
寫一些程式員的所思所想,希望對你有幫助,
出處:http://www.cnblogs.com/netxiaoahui/ 著作權宣告:本文著作權歸作者和博客園共有,歡迎轉載,
但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/296454.html
標籤:其他
