百度地圖開發-引入地圖SDK並配置 02

—阿輝發表於2021-08-26

百度地圖開發-引入地圖SDK並配置 02

通過上一篇文章的介紹,基本瞭解百度地圖的基本資訊,接下來就讓我們一起來實際在專案中操作,顯示出地圖。

01 引入地圖SDK

首先需要新建一個空白的Android專案,如下所示(具體新建專案這裡不進行闡述)。

新建的專案

接著在百度地圖的官方網站下載,應用程式需要的地圖SDK。其中需要注意,框選自己應用需要的業務即可。下載介面如下圖所示:

下載SDK

點選左側產品下載就可進入自定義下載介面,目前官網已更新到最新整合模式,如下圖所示。

自定義百度地圖SDK

建議下載:定位SDK下載全量定位,地圖SDK則如何應用中不進行步騎行導航則就按照預設選擇【基礎地圖】【檢索】就OK,在配置模組,開發包格式,記得選擇JAR,AAR是谷歌最新的格式檔案,目前還用不上。按照預設選擇即可。

點選底部的開發包,就成功下載百度地圖SDK開發包,這些包後期需成功引用到Android應用中,否則軟體無法載入並使用百度地圖服務。

也可下載示例程式碼,裡面是官方給的程式碼Demo,可進行參考。

下載後的檔案見下圖,後面需要將其全部引入到應用程式中。

sdk目錄

這裡分兩步

  • 將解壓後的檔案全部複製到Android專案的libs目錄中。

在app目錄下的build.gradle檔案中android塊中配置sourceSets標籤,如果沒有使用該標籤則新增,詳細配置程式碼如下:

    sourceSets {
        main {
            jniLibs.srcDir 'libs'
        }
    }

  • 在專案中引入libs目錄下的百度地圖jar包。

引入JAR包

編譯沒有問題後,則證明引入百度地圖SDK成功。

02 百度地圖常規配置

1、還記得上一期利用keytool生成的金鑰嗎?下來進行金鑰的配置。其實也比較簡單,在AndroidManifest.xml檔案中新加開發者key值,如下圖所示:

點選標紅框的中複製圖示,複製訪問應用金鑰AK,將其按照百度的文件要求,填寫到AndroidManifest.xml檔案中。

<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="開發者 key" />  
</application>

在“開發者value”中填寫應用金鑰AK,即可完成金鑰的配置。

要求格式

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zyc.testandroid">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!--申請金鑰百度生成的key值-->
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="1NNsn6oRNdM*******MtEMvPNcARRL5" />

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

2、申請百度地圖需要的許可權

由於目前android版本最新到10,而且從8.0之後,申請手機內部都必須詢問,徵得客戶同意才可以進行各種許可權的獲取。

當版本過低時,在AndroidManifest.xml檔案中,加入下面許可權資訊,就可進行許可權的訪問。當版本比較高時,也就是手機比較新讓我看看嗎?

低版本 預設許可

百度地圖許可
<!-- 訪問網路,進行地圖相關業務資料請求,包括地圖資料,路線規劃,POI檢索等 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 獲取網路狀態,根據網路狀態切換進行資料請求網路轉換 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
<!-- 讀取外接儲存。如果開發者使用了so動態載入功能並且把so檔案放在了外接儲存區域,則需要申請該許可權,否則不需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 寫外接儲存。如果開發者使用了離線地圖,並且資料寫在外接儲存區域,則需要申請該許可權 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

百度定位許可

<!-- 這個許可權用於進行網路定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 這個許可權用於訪問GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用於訪問wifi網路資訊,wifi資訊會用於進行網路定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 獲取運營商資訊,用於支援提供運營商資訊相關的介面-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 這個許可權用於獲取wifi的獲取許可權,wifi資訊會用來進行網路定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 寫入擴充套件儲存,向擴充套件卡寫入資料,用於寫入離線定位資料-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 訪問網路,網路定位需要上網-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

高版本 動態申請

  // 許可權請求
    private void getPermissionMethod() {
        List<String> permissionList = new ArrayList<>();
        
        if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
            permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
        }
        
        Log.i(TAG, "getPermissionMethod: permissionListSize:"+permissionList.size());
        if (!permissionList.isEmpty()){ //許可權列表不是空
            String[] permissions = permissionList.toArray(new String[permissionList.size()]);
            ActivityCompat.requestPermissions(MainActivity.this,permissions,1);
        }else{
            Log.i(TAG, "getPermissionMethod: requestLocation !permissionList.isEmpty()裡");
            requestLocation();
        }
    }

執行程式,如果沒有報錯,那麼證明目前的引入SDK,配置相關環境成功。

你真棒,有眼光。

小寄語

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

原創不易,給個關注。

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

相關文章