場景
效果
在使用百度地圖API之前需要先在百度地圖開放平台中申請API_KEY
http://lbsyun.baidu.com/index.php
申請API_KEY
登錄百度開放平台后找到控制台下的應用管理-創建應用
依次輸入應用名,應用類型選擇Android SDK
然后下面需要輸入發布版SHA1和包名
獲取應用SHA1
首先來到.Android文件所在的位置,默認位置如下
如果修改過就要到修改的路徑下。
AndroidStudio修改默認C盤配置文件夾(.android.gradle.AndroidStudio)以及修改后避免踩的坑:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103791948
我這里是修改過,所以這里的路徑是在D:\Android
在此路徑下打開命令行窗口。
這里采用使用JDK自帶的keytool工具生成
keytool默認路徑:C:\Program Files\Java\jdk1.8.0_181\bin
然后將keytool.exe拖到上面打開的.Android所在路徑命令行窗口中,然后再后面輸入
-list -v -keystore debug.keystore
回車。然后提示輸入密鑰庫命令,直接回車
然后就可以在證書指紋中獲取SHA1
然后再回到百度開放平台點擊提交。就可以獲取開發密鑰了。
獲取Android地圖SDK
然后再回到百度開放平台中開發文檔下的Android開發下Android地圖SDK
然后選擇自定義下載
然后這里只勾選幾個基本功能,具體功能根據自己需求勾選,然后點擊下方的開發包和示例代碼進行下載
項目中集成SDK
使用AndroidStudio新建項目,將項目視圖由Android切換為Project
這樣就會顯示libs目錄,然后解壓上面下載的開發包,可以看到其下面libs目錄下兩個jar包,將其復制到項目的lib下
然后選中這兩個jar包右鍵Add As Library,添加到庫
然后在src/main下新建JNIlibs目錄
然后將上面SDK下libs下的所有目錄復制到此目錄下
然后將項目切換回Android視圖下,打開activity_main.xml修改布局文件
將布局修改為相對布局,並添加百度地圖組件,並設置id
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <com.baidu.mapapi.map.MapView android:id="@+id/bmapview" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true"/> </RelativeLayout>
然后來到MainActivity.java中,首先聲明地圖組件然后再onCreate方法中初始化地圖SDK,注意初始化地圖SDK
的代碼要放在setContentView的代碼前。
然后還需要分別設置地圖組件的聲明周期。
package com.badao.baidumap; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.MapView; public class MainActivity extends AppCompatActivity { private MapView mapView;//聲明地圖組件 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //初始化地圖SDK SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); mapView = (MapView) findViewById(R.id.bmapview); } @Override protected void onPause() { super.onPause(); mapView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); mapView = null; } @Override protected void onResume() { super.onResume(); mapView.onResume(); } }
然后打開mainfests下的AndroidManifest.xml
首先添加meta-data標簽,內容如下
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="申請的開發密鑰"/>
然后進行權限的聲明。完整示例代碼
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.badao.baidumap"> <!-- 訪問網絡,進行地圖相關業務數據請求,包括地圖數據,路線規划,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" /> <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"> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="申請的開發密鑰"/> <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>
這塊代碼可以參照之前在百度開放平台下載的示例代碼。
或者可以參照官網的開發指南
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/showmap
然后需要將項目運行在可聯網的真機或者第三方模擬器上