Android百度地圖開發(一)之初體驗
轉載請註明出處:http://blog.csdn.net/crazy1235/article/details/42614603
做關於位置或者定位的app的時候免不了使用地圖功能,本人最近由於專案的需求需要使用百度地圖的一些功能,所以這幾天研究了一下,現寫一下blog記錄一下,歡迎大家評論指正!
一、申請AK(API Key)
要想使用百度地圖sdk,就必須申請一個百度地圖的api key。申請流程挺簡單的。
首先註冊成為百度的開發者,然後開啟http://lbsyun.baidu.com/apiconsole/key這個網址,新增應用:
建立應用最重要的一步是【安全碼】。安全碼是有【數字簽名】和【;】和【包名】組成。包名就是你所建立的專案的包的結構,是指AndroidManifest.xml中的manifest標籤下的package的值。
數字簽名指android的簽名證照的SHA1值。
獲取數字簽名有兩種方法:
1. 第一種方法:使用eclipse檢視。
開啟eclipse的preferences選單,在Android下的【Build】中可以看到SHA1的值,如下圖:
2. 第二種方法:使用keytool工具(jdk自帶)檢視。
在控制檯下,輸入【cd .android】,然後輸入【keytool -list -v -keystore debug.keystore】回車,然後提示你輸入【祕鑰庫口令】,輸入【android】回車然後就會顯示SHA1的值。
數字簽名搞定了,然後建立應用就ok了。建立完成之後,應用列表中會顯示相應的AK,也就是api key。
二、下載SDK開發包
開啟http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download網址下載sdk,可以全部下載,也可以自定義下載。從V2.3.0之後的版本,SDK的開發包以可定製的形式提供下載,使用者可以根據自己的專案需要勾選相應的功能下載對應的SDK開發包。
三、在android專案中引用百度SDK
1. 將開發包中的jar包和so檔案新增到libs檔案下。
2. 在AndroidManifest.xml中新增開發祕鑰和所需許可權。
<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="填寫你申請的AK" />
許可權:
<!-- 百度API所需許可權 -->
<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. 在佈局檔案中新增地圖控制元件:
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
4. 在應用程式建立時初始化SDK引用的Context全域性變數。
@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,或者MAinActivity.this都不行,不然會報執行時異常,所以百度建議把該方法放到Application的初始化方法中。
然後重寫activity的生命週期的幾個方法來管理地圖的生命週期。在activity的onResume、onPause、onDestory方法中分別執行mapview的onReusme、onPause、onDestory方法。
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();
}
}
完成以上步驟,此時就可以完成一個簡單的”Hello Map“程式了。
三、普通地圖和衛星地圖切換
百度地圖將地圖的型別分為兩種:普通向量地圖和衛星圖。
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
//普通地圖
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
//衛星地圖
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
四、顯示實時交通圖(路況圖)
//開啟交通圖
mBaiduMap.setTrafficEnabled(true);
五、顯示熱力圖
熱力圖就是以特殊高亮的形式顯示訪客熱衷的頁面區域和訪客所在的地理區域的圖示。通俗來說就是顯示地圖上某一塊區域的人的密集程度。類似於下圖所示:
//開啟熱力圖
mBaiduMap.setBaiduHeatMapEnabled(true);
相關文章
- Android DataBinding之初體驗Android
- 小程式雲開發之初體驗
- Android開發百度地圖指南針消失問題Android地圖
- MQTT之初體驗MQQT
- 地圖開發筆記(一):百度地圖介紹、使用和Qt內嵌地圖Demo地圖筆記QT
- 百度地圖開發-引入地圖SDK並配置 02地圖
- 百度地圖開發-顯示地圖預設介面 03地圖
- 百度地圖開發-與地圖的互動功能 06地圖
- 百度地圖開發-實現離線地圖功能 05地圖
- Android Studio 百度地圖導航Android地圖
- 百度地圖開發-在地圖上檢索資料 08地圖
- substrate學習筆記8:ink合約開發之初體驗筆記
- 設計模式之初體驗設計模式
- 百度地圖開發-在地圖上實現路線導航 09地圖
- NodeJs之初體驗04—UR(X)NodeJS
- 使用Kotlin高效地開發Android App(一)KotlinAndroidAPP
- 百度地圖sn驗證golang實現地圖Golang
- Laravel-S 專案之初體驗Laravel
- Django基礎教程之初體驗Django
- 百度地圖API基本使用(一)地圖API
- APP Referer校驗失敗:百度地圖報錯APP地圖
- 百度地圖javascript開發,刪除指定覆蓋物方法地圖JavaScript
- 百度地圖開發-繪製點線提示框 07地圖
- 百度地圖開發-顯示實時位置資訊 04地圖
- webpack4-用之初體驗,一起敲它十一遍Web
- Android 百度地圖InfoWindow 出現重疊的問題Android地圖
- Android開發學習之路--React-Native混合開發初體驗AndroidReact
- 室內三維3D地圖開發,自動繪製生成地圖軟體3D地圖
- hexo+github搭建靜態部落格之初體驗HexoGithub
- 百度地圖GeoUtils示例地圖
- 使用Angular8和百度地圖api開發《旅遊清單》Angular地圖API
- Android開發經驗總結Android
- 歡迎體驗 | Android 13 開發者預覽版 2Android
- 使用Kotlin高效地開發Android App(二)KotlinAndroidAPP
- 使用Kotlin高效地開發Android App(四)KotlinAndroidAPP
- 使用Kotlin高效地開發Android App(三)KotlinAndroidAPP
- 三年磨一劍,高德地圖體驗優化總結地圖優化
- 開發高效演算法之初窺演算法
- 對接百度地圖API地圖API