標籤:
轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/37729091
最近公司要把百度地圖整合的項目中,於是我就研究了一天百度地圖的SDK,當前的版本:Android SDK v3.0.0 。 雖然百度地圖網上相關代碼比較多,大多可能都是比較舊的版本,且百度地圖API的改動感覺也比較大,所以再此跟大家分享一下一天的勞動成功。
下面簡單展示下,部落格中會介紹的功能:
1、功能介紹
a、首先肯定是匯入地圖,然後就是地圖模式的一些切換,普通,衛星,即時交通什麼的。
b、定位功能,定位當前位置。
:
c、動態添加覆蓋物,點擊覆蓋物,彈出層以及其他效果。
:
d、結合方向感應器,為地圖的定位功能添加方向,本人極其路癡,不分東南西北,所以此功能對我來說非常重要,手機不斷旋轉,我才能知道當前應該走哪條路,直接顯示的地圖對我來說沒用。
(我360度的旋轉手機,觀察的變化):
切換到別的模式也是很炫的:
e、提供離線地圖下載,可以極大的省去使用者的流量,也能保證在無網路情況對地圖的使用。
基本這上述的功能,第一篇,還是從零開始,先把百度地圖匯入app再說。
2、申請密鑰
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
最後點擊完成,就能擷取密鑰了:
3、第一個baidu map應用
下載就不多說了,直接點擊官網的相關下載就行選擇就可,後面我也會貼上源碼。
配置:
第一步:在工程裡建立libs檔案夾,將開發包裡的baidumapapi_vX_X_X.jar拷貝到libs根目錄下,將libBaiduMapSDK_vX_X_X.so拷貝到libs\armeabi目錄下(官網demo裡已有這兩個檔案,如果要整合到自己的工程裡,就需要自己添加),拷貝完成後的工程目錄如所示;
註:liblocSDK3.so和locSDK_3.1.jar為百度定位SDK所使用資源,開發人員可根據實際需求自行添加。
android_dev1.png
第二步:在工程屬性->Java Build Path->Libraries中選擇“Add External JARs”,選定baidumapapi_vX_X_X.jar,確定後返回。
通過以上兩步操作後,您就可以正常使用百度地圖SDK為您提供的全部功能了。
注意:由於adt外掛程式升級,若您使用Eclipse adt 22的話,需要對開發環境進行相應的設定,方法如下:
1). 在Eclipse 中選中工程,右鍵選 Properties->Java Build Path->Order and Export 使 Android Private Libraries處於勾選狀態;
2). Project -> clean-> clean all .
a、在application中添加開發密鑰
[html] view plain
- <application
- <meta-data
- android:name="com.baidu.lbsapi.API_KEY"
- android:value="開發人員 key" />
- </application>
b、添加要求的權限
[html] view plain
- <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、布局檔案中添加地圖控制項
[html] view plain
- <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 全域變數:
[java] view plain
- @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、不過地圖很耗電,所以有必要管理其聲明周期
[java] view plain
- 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中百度地圖的使用期待您的支援。
博主部分視頻已經上線,如果你不喜歡枯燥的文本,請猛戳(初錄,期待您的支援):
1、Android 自訂控制項實戰 電商活動中的刮刮卡
2、Android自訂控制項實戰 打造Android流式布局和熱門標籤
3、Android智能機器人“小慕”的實現
4、高仿QQ5.0側滑
5、高仿5.2.1主介面及訊息提醒
Android 百度地圖 SDK v3.0.0 (一)