百度地圖開發-顯示實時位置信息 04

在上一篇文章中,已經可以看到默認的百度地圖,那就說明我們的操作是正確的,申請的密鑰和引入地圖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個屬性,這些可以參考百度官方教程,上面說的很詳細。

下面圖片是成功運行的情況。

實時定位顯示

對於一些官方的教程,有時候不能完全信。你要綜合考慮,如果按照官方的教程來編碼,出現不了你想要的結果,那麼很有可能是教程沒有及時更新或者沒有給你交代清楚,那麼此時就需要去互聯網上找找解決方案,看是否別人也遇到了這個問題,是否有解決辦法,自己多上手操作操作,就好了。

今天的分享就到這裡,我們下期再會。

時間有點晚了,洗洗睡了,明天還得起床去打工。加油 打工人

小寄語

人生短暫,我不想去追求自己看不見的,我只想抓住我能看的見的。

原創不易,給個關注。

我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點贊、轉發 謝謝。