一、下載下傳百度地圖SDK
下載下傳位址:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download
二、在工程中加入SDK
1.将百度地圖SDK中的jar包複制到工程目錄下的libs檔案夾
2.選擇所有jar包,右鍵->add as library->确定
3.在src/main/目錄下建立一個檔案夾,存放.so檔案【請将v8a、v7a和abi檔案夾都複制進去,否則會出現錯誤:No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create
1.将百度地圖SDK所有jar包複制在工程目錄下的libs檔案夾内
2.選擇所有jar包,右鍵選擇 add as library ,點選确認
3.在src/main/目錄下建立一個JniLibs的檔案夾用來存放so檔案(so檔案時UNIX的動态連結庫)
三、使用百度地圖
【摘自百度官方網站:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap】
在AndroidManifest中添加開發密鑰、所需權限等資訊
(1)在application中添加開發密鑰
<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">
//在application中添加開發密鑰
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="BmXUnkE56RHrZmdv1GHYDMgtKViFbAUQ" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
(2)添權重限
//添加所需的權限
<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權限
(3)在布局xml檔案(預設activity_main.xml)中添加地圖控件
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:focusable="true" />
(4)在應用程式建立時初始化SDK引用的Context 是全局變量
private MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各元件之前初始化context資訊,傳入ApplicationContext
//注意該方法要再setContentview方法之前實作
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//擷取地圖控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
}
(5)建立地圖Activity,管理地圖生命周期
protected void onDestroy(){
super.onDestroy();
//在activity執行onDestroy時執行mMapView.onDestory(),實作地圖生命周期管理
mMapView.onDestroy();
}
protected void onResume(){
super.onResume();
//在activity執行onResume時執行mMapView.onResume(),實作地圖生命周期管理
mMapView.onResume();
}
protected void onPause(){
super.onPause();
//在activity執行onPause時執行mMapView.onPause(),實作地圖生命周期管理
mMapView.onPause();
}
完成以上步驟後,運作程式,即可在您的應用中顯示地圖
四、常見問題
問題:工程代碼顯示:找不到jar包
解答:将百度地圖jar包複制到工程目錄下的libs的同時,還需要add as library,同時在src/main/下建立一個檔案夾,用于存放.so檔案
問題:No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create
解答:請在src/main/下建立一個檔案夾,用于存放.so檔案,并且需要将v8a、v7a和abi檔案夾都複制進去
問題:SHA1的擷取
解答:請參考上文
問題:Failure [INSTALL_FAILED_NO_MATCHING_ABIS]
解答:虛拟裝置要選擇 arm或者直接打包安裝到手機上看效果吧
問題:隻顯示網格,沒有地圖
解答:(1)沒有網絡;
(2)簽名(SHA1)包名、API key等其中任意一項設定不正确;
(3)AndroidManifest中的配置的不正确:比如API權限、API_KEY、以及uses-permission、meta-data的位置等等
!