由於項目需求緣故,最近在學習Android地圖的開發,所以就記錄一下學習過程。最近都會陸續更新啦。目前使用百度地圖API的挺多的,所以就先以它為基礎學習一些地圖的調用。 一、AK的申請 與web開發不一樣,Android的地圖項目開發需要申請一個AK才能調用地圖功能。 1.註冊成為百度開發者,正常填 ...
由於項目需求緣故,最近在學習Android地圖的開發,所以就記錄一下學習過程。最近都會陸續更新啦。目前使用百度地圖API的挺多的,所以就先以它為基礎學習一些地圖的調用。
一、AK的申請
與web開發不一樣,Android的地圖項目開發需要申請一個AK才能調用地圖功能。
1.註冊成為百度開發者,正常填入信息即可。
2.申請密鑰:
在http://lbsyun.baidu.com/apiconsole/key中創建應用,現在百度只允許一個key對應一個應用。
(1)應用名稱:與自己創建項目名一致。
(2)應用類型:Android SDK
(3)啟動服務:建議全部勾選,方便項目後續繼續添加功能。
(4)數字簽名(SHA1):
在Android studio上有命令行,直接啟動,進入C:\用戶名\.android,輸入keytool -list -v -keystore debug.keystore(密鑰庫命令是android),會出現證書指紋,將SHA1的值粘貼過去即可。
由於百度推薦的這個方法出來的SHA1可能出現錯誤,百度論壇上許多人包括本人也出現SHA1值錯誤導致的AK匹對失敗,在論壇上看到官方給出一個測試AK的app,它可以獲取所有應用正確的SHA1和包名,我們可以把以前錯誤替換掉。這是網址:http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=85103&extra=page%3D1
(5)包名:Android studio里在app文件下的build.gradle,applicationId就是包名。
二、下載SDK開發包
1.在網址:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download
一鍵下載會把jar包、so文件以及一些demo都包含,後面也比較方便查看。
2.接下來就是在android studio創建項目,過程就不說啦,建完後添加jar包和so文件
jar包:添加在libs文件下,並右擊右擊里選擇add as library;
so文件:在main文件下新建jniLibs文件,將各種編譯環境的so文件粘貼進去。
3.在AndroidManifest.xml 聲明AK和許可權
AK:
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="開發者 key" />
</application>
許可權(算是比較齊全的許可權):
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
4.在佈局文件中添加地圖控制項
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true">
</com.baidu.mapapi.map.MapView>
5.應用創建需要初始化SDK,引用全局變數:
6.創建基礎地圖:
在主線程裡面聲明瞭控制項引用就可以使用基礎地圖了,顯示基本的地圖信息。
mMapView = (MapView) findViewById(R.id.bmapView);
然後管理聲明周期,在各個階段同步地圖的狀態。
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}
後面會陸續更新定位的獲取,地圖POI的檢索和一些路線規劃等等。