轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/37729091html
最近公司要把百度地圖集成的項目中,因而我就研究了一天百度地圖的SDK,當前的版本:Android SDK v3.0.0 。 雖然百度地圖網上相關代碼比較多,大多可能都是比較舊的版本,且百度地圖API的改動感受也比較大,因此再此跟你們分享一下一天的勞動成功。java
下面簡單展現下,博客中會介紹的功能:android
a、首先確定是導入地圖,而後就是地圖模式的一些切換,普通,衛星,實時交通什麼的。api
b、定位功能,定位當前位置。安全
效果圖:微信
c、動態添加覆蓋物,點擊覆蓋物,彈出層以及其餘效果。網絡
效果圖:app
d、結合方向傳感器,爲地圖的定位功能添加方向,本人極其路癡,不分東南西北,因此此功能對我來講很是重要,手機不斷旋轉,我才能知道當前應該走哪條路,直接顯示的地圖對我來講沒用。ide
效果圖(我360度的旋轉手機,觀察效果圖的變化):佈局
切換到別的模式也是很炫的:
e、提供離線地圖下載,能夠極大的省去用戶的流量,也能保證在無網絡狀況對地圖的使用。
基本這上述的功能,第一篇,仍是從零開始,先把百度地圖導入app再說。
a、申請密鑰,到百度API控制檯的頁面:http://lbsyun.baidu.com/apiconsole/key
輸入要應用名稱,選擇應用類型,輸入安全嗎。
b、關於安全碼 ( 數字簽名;包名 ) 的獲取:
打開IDE:
黑框框住的就是數字簽名,而後包名就是我們應用的包名,直接用分號鏈接:例如:F5:10:39:D9:81:57:BD:2E:A0:CD:E3:EB:5E:C4:CC:E0:E0:0D:41:56;com.zhy.zhy_baidu_ditu_demo03
最後點擊完成,就能獲取密鑰了:
下載就很少說了,直接點擊官網的相關下載就行選擇就可,後面我也會貼上源碼。
配置:
第一步:在工程裏新建libs文件夾,將開發包裏的baidumapapi_vX_X_X.jar拷貝到libs根目錄下,將libBaiduMapSDK_vX_X_X.so拷貝到libs\armeabi目錄下(官網demo裏已有這兩個文件,若是要集成到本身的工程裏,就須要本身添加),拷貝完成後的工程目錄以下圖所示;
a、在application中添加開發密鑰
<application <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="開發者 key" /> </application>
b、添加所需權限
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_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.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
c、佈局文件中添加地圖控件
<com.baidu.mapapi.map.MapView android:id="@+id/id_bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" />
d、在應用程序建立時初始化 SDK引用的Context 全局變量:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); // 在使用SDK各組件以前初始化context信息,傳入ApplicationContext // 注意該方法要再setContentView方法以前實現 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); }
好了,通過這四步就能顯示地圖了~~
e、不過地圖很耗電,因此有必要管理其聲明週期
package com.zhy.zhy_baidu_ditu_demo00; import android.app.Activity; import android.os.Bundle; import android.view.Window; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.MapView; public class MainActivity extends Activity { private MapView mMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); // 在使用SDK各組件以前初始化context信息,傳入ApplicationContext // 注意該方法要再setContentView方法以前實現 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); // 獲取地圖控件引用 mMapView = (MapView) findViewById(R.id.id_bmapView); } @Override protected void onDestroy() { super.onDestroy(); // 在activity執行onDestroy時執行mMapView.onDestroy(),實現地圖生命週期管理 mMapView.onDestroy(); mMapView = null; } @Override protected void onResume() { super.onResume(); // 在activity執行onResume時執行mMapView. onResume (),實現地圖生命週期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); // 在activity執行onPause時執行mMapView. onPause (),實現地圖生命週期管理 mMapView.onPause(); } }
好了,完成。其實百度開發指南上對了helloworld這篇也極其清楚~~~~
百度地圖相關博客視頻版本已經上線:Android中百度地圖的使用期待您的支持。
博主部分視頻已經上線,若是你不喜歡枯燥的文本,請猛戳(初錄,期待您的支持):