Android百度地圖的使用

    作關於位置或者定位的app的時候免不了使用地圖功能,本人最近因爲項目的需求須要使用百度地圖的一些功能,因此這幾天研究了一下,現寫一下blog記錄一下,歡迎你們評論指正!php

1、申請AK(API Key)

    要想使用百度地圖sdk,就必須申請一個百度地圖的api key。申請流程挺簡單的。html

    首先註冊成爲百度的開發者,而後打開http://lbsyun.baidu.com/apiconsole/key這個網址,添加應用:java


    建立應用最重要的一步是【安全碼】。安全碼是有【數字簽名】和【;】和【包名】組成。包名就是你所建立的項目的包的結構,是指AndroidManifest.xml中的manifest標籤下的package的值。android

    數字簽名指Android的簽名證書的SHA1值。api

    獲取數字簽名有兩種方法:安全

    1. 第一種方法:使用eclipse查看。app

    打開eclipse的preferences菜單,在Android下的【Build】中能夠看到SHA1的值,以下圖:eclipse


    2. 第二種方法:使用keytool工具(jdk自帶)查看。ide

    在控制檯下,輸入【cd .android】,而後輸入【keytool -list -v -keystore debug.keystore】回車,而後提示你輸入【祕鑰庫口令】,輸入【android】回車而後就會顯示SHA1的值。工具



數字簽名搞定了,而後建立應用就ok了。建立完成以後,應用列表中會顯示相應的AK,也就是api key。

2、下載SDK開發包

    打開http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download網址下載sdk,能夠所有下載,也能夠自定義下載。從V2.3.0以後的版本,SDK的開發包以可定製的形式提供下載,用戶能夠根據本身的項目須要勾選相應的功能下載對應的SDK開發包。

3、在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全局變量。

<span style="font-size:14px;">    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        requestWindowFeature(Window.FEATURE_NO_TITLE);  
        //  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main);  
        init();  
    }  </span>


        這裏須要注意一下:initialize方法中必須傳入的是ApplicationContext,傳入this,或者MAinActivity.this都不行,否則會報運行時異常,因此百度建議把該方法放到Application的初始化方法中。

        而後重寫activity的生命週期的幾個方法來管理地圖的生命週期。在activity的onResume、onPause、onDestory方法中分別執行mapview的onReusme、onPause、onDestory方法。

<span style="font-size:14px;">    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();  
        }  
    }  </span>


    完成以上步驟,此時就能夠完成一個簡單的」Hello Map「程序了。

3、普通地圖和衛星地圖切換

   百度地圖將地圖的類型分爲兩種:普通矢量地圖和衛星圖。

<span style="font-size:14px;">    mMapView = (MapView) findViewById(R.id.bmapView);    
    mBaiduMap = mMapView.getMap();    
    //普通地圖    
    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);    
    //衛星地圖    
    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);  </span>

4、顯示實時交通圖(路況圖)

<span style="font-size:14px;">    //開啓交通圖     
    mBaiduMap.setTrafficEnabled(true);  </span>

5、顯示熱力圖

    熱力圖就是以特殊高亮的形式顯示訪客熱衷的頁面區域和訪客所在的地理區域的圖示。通俗來講就是顯示地圖上某一塊區域的人的密集程度。相似於下圖所示:

<span style="font-size:14px;">//開啓熱力圖     
mBaiduMap.setBaiduHeatMapEnabled(true);  </span>


轉載:http://blog.csdn.net/crazy1235/article/details/42614603

相關文章
相關標籤/搜索