生活随笔
收集整理的這篇文章主要介紹了
Android百度地图开发01之初体验
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
做關(guān)于位置或者定位的app的時(shí)候免不了使用地圖功能,本人最近由于項(xiàng)目的需求需要使用百度地圖的一些功能,所以這幾天研究了一下,現(xiàn)寫一下blog記錄一下,歡迎大家評(píng)論指正!
一、申請(qǐng)AK(API Key)
? ? 要想使用百度地圖sdk,就必須申請(qǐng)一個(gè)百度地圖的api key。申請(qǐng)流程挺簡(jiǎn)單的。
? ? 首先注冊(cè)成為百度的開(kāi)發(fā)者,然后打開(kāi)http://lbsyun.baidu.com/apiconsole/key這個(gè)網(wǎng)址,添加應(yīng)用:
? ? 創(chuàng)建應(yīng)用最重要的一步是【安全碼】。安全碼是有【數(shù)字簽名】和【;】和【包名】組成。包名就是你所創(chuàng)建的項(xiàng)目的包的結(jié)構(gòu),是指AndroidManifest.xml中的manifest標(biāo)簽下的package的值。
? ? 數(shù)字簽名指android的簽名證書的SHA1值。
? ? 獲取數(shù)字簽名有兩種方法:
? ? 1. 第一種方法:使用eclipse查看。
? ? 打開(kāi)eclipse的preferences菜單,在Android下的【Build】中可以看到SHA1的值,如下圖:
? ? 2. 第二種方法:使用keytool工具(jdk自帶)查看。
? ? 在控制臺(tái)下,輸入【cd .android】,然后輸入【keytool -list -v -keystore debug.keystore】回車,然后提示你輸入【秘鑰庫(kù)口令】,輸入【android】回車然后就會(huì)顯示SHA1的值。
數(shù)字簽名搞定了,然后創(chuàng)建應(yīng)用就ok了。創(chuàng)建完成之后,應(yīng)用列表中會(huì)顯示相應(yīng)的AK,也就是api key。
二、下載SDK開(kāi)發(fā)包
?
? ? 打開(kāi)http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download網(wǎng)址下載sdk,可以全部下載,也可以自定義下載。從V2.3.0之后的版本,SDK的開(kāi)發(fā)包以可定制的形式提供下載,用戶可以根據(jù)自己的項(xiàng)目需要勾選相應(yīng)的功能下載對(duì)應(yīng)的SDK開(kāi)發(fā)包。
三、在android項(xiàng)目中引用百度SDK
? ? 1. 將開(kāi)發(fā)包中的jar包和so文件添加到libs文件下。
? ? 2. 在AndroidManifest.xml中添加開(kāi)發(fā)秘鑰和所需權(quán)限。
?
[java] view plaincopy
<application??????????android:allowBackup="true"??????????android:icon="@drawable/ic_launcher"??????????android:label="@string/app_name"??????????android:theme="@style/AppTheme"?>??????????<meta-data??????????????android:name="com.baidu.lbsapi.API_KEY"??????????????android:value="填寫你申請(qǐng)的AK"?/>?? ? ? 權(quán)限:
?
[java] view plaincopy
<!--?百度API所需權(quán)限?-->??????<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"?/>?? ? ? 3. 在布局文件中添加地圖控件:
?
[java] view plaincopy
<com.baidu.mapapi.map.MapView??????????android:id="@+id/bmapview"??????????android:layout_width="match_parent"??????????android:layout_height="match_parent"??????????android:clickable="true"?/>?? ? ? 4. 在應(yīng)用程序創(chuàng)建時(shí)初始化SDK引用的Context全局變量。
?
[java] view plaincopy
@Override??protected?void?onCreate(Bundle?savedInstanceState)?{??????super.onCreate(savedInstanceState);??????requestWindowFeature(Window.FEATURE_NO_TITLE);??????????SDKInitializer.initialize(getApplicationContext());??????setContentView(R.layout.activity_main);??????init();??}?? ? ? ? ??這里需要注意一下:initialize方法中必須傳入的是ApplicationContext,傳入this,或者M(jìn)AinActivity.this都不行,不然會(huì)報(bào)運(yùn)行時(shí)異常,所以百度建議把該方法放到Application的初始化方法中。
? ?? ? ?然后重寫activity的生命周期的幾個(gè)方法來(lái)管理地圖的生命周期。在activity的onResume、onPause、onDestory方法中分別執(zhí)行mapview的onReusme、onPause、onDestory方法。
[java] view plaincopy
package?com.bdmap.view;??import?com.baidu.mapapi.SDKInitializer;??import?com.baidu.mapapi.map.BaiduMap;??import?com.baidu.mapapi.map.MapView;??import?android.app.Activity;??import?android.os.Bundle;??import?android.view.View;??import?android.view.Window;??public?class?MainActivity?extends?Activity?{??????????private?MapView?mMapView?=?null;??????????private?BaiduMap?bdMap;??????@Override??????protected?void?onCreate(Bundle?savedInstanceState)?{??????????super.onCreate(savedInstanceState);??????????requestWindowFeature(Window.FEATURE_NO_TITLE);??????????????????SDKInitializer.initialize(getApplicationContext());??????????setContentView(R.layout.activity_main);??????????init();??????}????????????private?void?init()?{??????????mMapView?=?(MapView)?findViewById(R.id.bmapview);??????}??????@Override??????protected?void?onResume()?{??????????super.onResume();??????????mMapView.onResume();??????}??????@Override??????protected?void?onPause()?{??????????super.onPause();??????????mMapView.onPause();??????}??????@Override??????protected?void?onDestroy()?{??????????mMapView.onDestroy();??????????mMapView?=?null;??????????super.onDestroy();??????}??}??
? ? 完成以上步驟,此時(shí)就可以完成一個(gè)簡(jiǎn)單的”Hello Map“程序了。
三、普通地圖和衛(wèi)星地圖切換
? ?百度地圖將地圖的類型分為兩種:普通矢量地圖和衛(wèi)星圖。
?
[java] view plaincopy
mMapView?=?(MapView)?findViewById(R.id.bmapView);????mBaiduMap?=?mMapView.getMap();????mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);????mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);?? 四、顯示實(shí)時(shí)交通圖(路況圖)
?
[java] view plaincopy
mBaiduMap.setTrafficEnabled(true);?? 五、顯示熱力圖
? ? 熱力圖就是以特殊高亮的形式顯示訪客熱衷的頁(yè)面區(qū)域和訪客所在的地理區(qū)域的圖示。通俗來(lái)說(shuō)就是顯示地圖上某一塊區(qū)域的人的密集程度。類似于下圖所示:
[java] view plaincopy
mBaiduMap.setBaiduHeatMapEnabled(true);??
總結(jié)
以上是生活随笔為你收集整理的Android百度地图开发01之初体验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。