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


百度地圖開發-引入地圖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,配置相關環境成功。

你真棒,有眼光。

小寄語

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

原創不易,給個關注。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM