百度地圖在Android開(kāi)發(fā)中的應(yīng)用前景還是蠻廣泛的,所以這個(gè)系列將比較完整的講解百度地圖SDK的使用。
1 創(chuàng)建應(yīng)用步驟
這一章我們講講利用百度地圖時(shí)一般的應(yīng)用創(chuàng)建步驟。前提是我們已有了一個(gè)Android工程。
1.1 獲取密鑰
自從2.3.1版本后,百度地圖使用了新的密鑰系統(tǒng)。我們這里以最新版本的密鑰系統(tǒng)進(jìn)行演示。
- 首先我們?nèi)?a target="_blank" >http://developer.baidu.com/map/sdk-android.htm,找到獲取密鑰,期間需要登錄你自己的百度賬號(hào)。
- 點(diǎn)擊“創(chuàng)建應(yīng)用”,之后輸入應(yīng)用名稱(chēng)、應(yīng)用類(lèi)型(這里是for mobile)、安全碼(這里是"數(shù)字簽名+;+包名");
- 這里的數(shù)字簽名通過(guò)Eclipse->Preference->Android->Build中的SHA-1得到;
- 獲得的密鑰紀(jì)錄下來(lái)后備用;
1.2 拷貝文件
接下來(lái)我們將所需要的庫(kù)文件拷貝到工程中。
- 去http://developer.baidu.com/map/sdkandev-download.htm下載所有sdk文件包,我這里得到的是BaiduMap_AndroidSDK_v2.3.1_All.zip;
- 接下來(lái)找到壓縮包中的baidumapapi_v2_3_1.jar,將其拷貝到libs根目錄;
- 找到壓縮包中的libBaiduMapSDK_v2_3_1.so文件,將其拷貝到libs/armeabi目錄;
- 在Eclipse的Build Path中,對(duì)于Order and Export,將"Android Private Libraries"選中,然后Project->Clean;
- 至此,拷貝文件工作完成;
1.3 修改Manifest.xml文件
對(duì)于工程需要增加網(wǎng)絡(luò)、定位等權(quán)限,這里我們拷貝下面這段到Manifest.xml文件中:
- <!-- 使用網(wǎng)絡(luò)功能所需權(quán)限 -->
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
- </uses-permission>
- <uses-permission android:name="android.permission.INTERNET" >
- </uses-permission>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
- </uses-permission>
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
- </uses-permission>
- <!-- SDK離線地圖和cache功能需要讀寫(xiě)外部存儲(chǔ)器 -->
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
- </uses-permission>
- <!-- 獲取設(shè)置信息和詳情頁(yè)直接撥打電話需要以下權(quán)限 -->
- <uses-permission android:name="android.permission.READ_PHONE_STATE" >
- </uses-permission>
- <uses-permission android:name="android.permission.CALL_PHONE" >
- </uses-permission>
- <!-- 使用定位功能所需權(quán)限,demo已集成百度定位SDK,不使用定位功能可去掉以下6項(xiàng) -->
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
- </uses-permission>
-
- <permission android:name="android.permission.BAIDU_LOCATION_SERVICE" >
- </permission>
-
- <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" >
- </uses-permission>
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
- </uses-permission>
- <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" >
- </uses-permission>
- <uses-permission android:name="android.permission.ACCESS_GPS" />
注意:我這里添加了以上權(quán)限后實(shí)際運(yùn)行時(shí)還需要添加一個(gè)android.permission.WRITE_SETTINGS權(quán)限。
同時(shí)我們需要一個(gè)Activity顯示我們的Map界面,所以我們添加一個(gè)Activity:
- <!-- BaiduMap測(cè)試 -->
- <activity
- android:name="com.freesoft.activity.baidu.BaiduMapActivity"
- android:configChanges="orientation|keyboardHidden"
- android:screenOrientation="sensor" >
- </activity>
當(dāng)然還要添加屏幕和sdk版本的支持選項(xiàng):
- <supports-screens android:largeScreens="true"
- android:normalScreens="true"
- android:smallScreens="true"
- android:resizeable="true"
- android:anyDensity="true"/>
- <uses-sdk
- android:minSdkVersion="7"
- android:targetSdkVersion="7" />
1.4 添加布局文件
由于是一個(gè)簡(jiǎn)單的工程,我們的布局文件是這個(gè)樣子滴:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="hello world" />
- <com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:clickable="true" />
- </LinearLayout>
1.5 Activity類(lèi)代碼
最重要的Activity代碼來(lái)了:
- public class BaiduMapActivity extends Activity {
- private BMapManager mBMapMan = null;
- private MapView mMapView = null;
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mBMapMan=new BMapManager(getApplication());
- mBMapMan.init("這里填入你自己申請(qǐng)的Key", null);
- //注意:請(qǐng)?jiān)谠囉胹etContentView前初始化BMapManager對(duì)象,否則會(huì)報(bào)錯(cuò)
- setContentView(R.layout.activity_baidumap);
- mMapView=(MapView)findViewById(R.id.bmapsView);
- mMapView.setBuiltInZoomControls(true);
- //設(shè)置啟用內(nèi)置的縮放控件
- MapController mMapController=mMapView.getController();
- // 得到mMapView的控制權(quán),可以用它控制和驅(qū)動(dòng)平移和縮放
- GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));
- //用給定的經(jīng)緯度構(gòu)造一個(gè)GeoPoint,單位是微度 (度 * 1E6)
- mMapController.setCenter(point);//設(shè)置地圖中心點(diǎn)
- mMapController.setZoom(12);//設(shè)置地圖zoom級(jí)別
- }
-
- // 重寫(xiě)activity生命周期方法以對(duì)mapview和map manager進(jìn)行管理
- @Override
- protected void onDestroy(){
- mMapView.destroy();
- if(mBMapMan!=null){
- mBMapMan.destroy();
- mBMapMan=null;
- }
- super.onDestroy();
- }
- @Override
- protected void onPause(){
- mMapView.onPause();
- if(mBMapMan!=null){
- mBMapMan.stop();
- }
- super.onPause();
- }
- @Override
- protected void onResume(){
- mMapView.onResume();
- if(mBMapMan!=null){
- mBMapMan.start();
- }
- super.onResume();
- }
- }
注意:
上面的代碼需要替換你自己申請(qǐng)的密鑰和你的layout。
http://blog.csdn.net/jariwsz/article/details/17118925
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。