Android百度地圖開發(一)之初體驗

來源:互聯網
上載者:User

標籤:百度地圖   sha1   mapview   baidumap   

轉載請註明出處: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全域變數。

@Overrideprotected 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;@Overrideprotected 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);}@Overrideprotected void onResume() {super.onResume();mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();mMapView.onPause();}@Overrideprotected 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百度地圖開發(一)之初體驗

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.