Android 使用百度地圖API來顯示地圖
http://lbsyun.baidu.com/
進入百度地圖開放平臺,登入百度賬號
選擇應用型別為Android SDK
釋出版SHA1,和開發板SHA1的獲取方法為:
找到電腦上的.android路徑,一般都在C盤使用者目錄下,
有的配置Android環境變數的話可能在SDK的目錄下
然後開啟Android Studio,開啟Terminal
進入到.android目錄下
輸入 keytool -list -v -keystore debug.keystore
金鑰庫口令不用輸入,直接回車
會顯示證書指紋,裡面有SHA1,直接複製就可以
輸入SHA1和包名後,會自動生成安全碼
然後點選提交,這樣我們就生成了一個金鑰
然後在百度地圖首頁
接下來根據自己的專案需求來勾選相應的功能
點選開發包下載,這就是下載好的開發包
以上就是百度地圖API的準備工作
————————————————————————————————————————————————————————
開發步驟:
- 配置百度地圖SDK
- 佈局介面
- 初始化SDK引用的Context全域性變數
- 管理地圖生命週期
將之前下載的BaiduLBS_AndroidSDK_Lib解壓,並將裡面libs目錄中的兩個jar包複製到
Android Studio專案下libs目錄下
將libs目錄下的jar包新增到庫當中
點選ok
同時在build.gradle中會生成工程所依賴的對應的Jar檔案說明,程式碼如下
dependencies{
implementation files('libs/BaiduLBS_Android.jar')files('libs/BaiduLBS_Android.jar')
}
在src目錄下的main目錄中建立jniLibs目錄
然後將百度地圖SDK中的lib目錄複製到剛剛建立的目錄
但有時候這樣工程並不會自動載入libs下的so檔案,
需配置so檔案的路徑為該libs路徑,關聯所有地圖SDK的so檔案,
即在app資料夾下的bulid.gradle加入程式碼: jniLibs.srcDir 'libs' ,詳細程式碼如下:
(在bulidTypes {} 結束後新增此段程式碼)
sourceSets{
main{
jniLibs.srcDir 'libs'
//說明so的路徑為該libs路徑,關聯所有地圖SDK的so檔案
}
}
接下來在application中新增開發金鑰(AK)
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="開發者 key" />
</application>
新增所需許可權
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
//獲取裝置網路狀態,禁用後無法獲取網路狀態
<uses-permission android:name="android.permission.INTERNET"/>
//網路許可權,當禁用後,無法進行檢索等相關業務
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//讀取裝置硬體資訊,統計資料
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
//讀取系統資訊,包含系統版本等資訊,用作統計
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//獲取裝置的網路狀態,鑑權所需網路代理
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//允許sd卡寫許可權,需寫入地圖資料,禁用後無法顯示地圖
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//獲取統計資料
<uses-permission android:name="android.permission.CAMERA" />
//使用步行AR導航,配置Camera許可權
在MainActivity.java中的程式碼如下
private MapView mMapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化地圖SDK,
//需要在setContentView(R.layout.activity_main);上面
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//獲取地圖控制元件引用
mMapView = findViewById(R.id.bmapView);
//自4.3.0起,百度地圖SDK所有介面均支援百度座標和國測局座標,用此方法設定您使用的座標型別.
//包括BD09LL和GCJ02兩種座標,預設是BD09LL座標。
SDKInitializer.setCoordType(CoordType.BD09LL);
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
mMapView = null;
}
注:最好使用真機執行