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

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

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

01 引入地圖SDK

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

新建的項目

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

下載SDK

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

自定義百度地圖SDK

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

點擊底部的開發包,就成功下載百度地圖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="//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,配置相關環境成功。

你真棒,有眼光。

小寄語

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

原創不易,給個關注。

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