Android百度地圖開發(一)環境搭建

1.百度地圖官方API文檔下載

版本  使用說明 下載
Android SDK
通用資源下載

《離線地圖》提供新版離線地圖(百度矢量地圖)與舊版離線地圖(百度柵格地圖)下載。html

備註:java

  • 自Android SDKv2.0.0版本開始,離線地圖功能使用百度矢量地圖。請下載新版離線地圖,即登錄網站直接選擇手機品牌,型號,城市便可下載。
  • Android SDKv1.3.5版本及之前版本,離線地圖功能使用百度柵格地圖,請下載舊版離線地圖。舊版下載入口與方法詳見:http://www.cnblogs.com/milkmap/archive/2012/05/21/2511928.html
離線地圖
Android SDKv2.2.0
(矢量地圖版)

1. 若需使用Android SDK,請先下載對應版本的lib庫,在Android工程中引用jar和so文件。android

2. 該版本SDK提供矢量版地圖。api

3. Lib庫和示例代碼下載包中均含有readme.txt,可閱讀參考,有助您的開發。app

4. 若使用離線地圖,請下載矢量版離線地圖。注意:請參閱開發指南_離線地圖說明,導入至BaiduMapSdk文件夾。ide

5. 注意:自v2.1.3版本起,SDK採用了全新的Key驗證體系,若是您選擇使用v2.1.3及之後的版本,需申請全新的Key。(點擊查看申請流程測試

Android SDKv2.2.0 lib庫 網站

Android SDKv2.2.0 類參考ui

Android SDKv2.2.0 示例代碼this

 所有下載  

Android SDKv1.3.5
(柵格地圖版)

若需使用Android SDK,請先下載對應版本的lib庫,在Android工程中引用jar和so文件。

該版本提供柵格版底圖。

 Android SDKv1.3.5 lib庫

Android SDKv1.3.5 類參考

Android SDKv1.3.5 示例代碼

Android SDKv1.3.5開發指南

 所有下載

2.申請密鑰key

http://developer.baidu.com/map/android-mobile-apply-key.htm

3.創建項目

4.導入jar包

將實例中的libs文件夾拷貝到項目中,而後選中baidumapapi.jar,右鍵--〉build path-->add to build path

5.在activity_main.xml中添加一個view用來顯示地圖

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!-- 添加顯示地圖的控件 -->

    <com.baidu.mapapi.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />

</LinearLayout>

6.編寫MainActivity.java對功能進行實現

package com.arlen.baidu_hello;

import android.os.Bundle;
import android.view.Menu;
import android.widget.Toast;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;

public class MainActivity extends MapActivity {

    // 添加百度地圖的相關控件
    private MapView mapView;
    private BMapManager bMapManager; // 加載地圖的引擎
    // 百度地圖的key
    private String keyString = "43D220AAB0DEC976D2EABC83CFC9EEE52BCCCA7A";
    // 在百度地圖上添加一些空間,好比放大或者縮小
    private MapController mapComtroller;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mapView = (MapView) findViewById(R.id.bmapView);
        bMapManager = new BMapManager(MainActivity.this);

        // 必需要加載key
        bMapManager.init(keyString, new MKGeneralListener() {
            @Override
            public void onGetPermissionState(int arg0) {
                // TODO Auto-generated method stub
                if (arg0 == 300) {
                    Toast.makeText(MainActivity.this, "輸入的key有誤,請覈實!", 1)
                            .show();
                }
            }

            @Override
            public void onGetNetworkState(int arg0) {
                // TODO Auto-generated method stub

            }
        });

        this.initMapActivity(bMapManager);
        mapView.setBuiltInZoomControls(true); // 表示能夠設置縮放功能
        mapComtroller = mapView.getController();
        // 須要定義一個經緯度
        GeoPoint geoPoint = new GeoPoint((int) (39.915 * 1E6),
                (int) (116.404 * 1E6));
        // 設置一箇中心點
        mapComtroller.setCenter(geoPoint);
        // 設置縮放級別
        mapComtroller.setZoom(12);

    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();

        if (bMapManager != null) {
            bMapManager.destroy();
            bMapManager = null;
        }
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();

        if (bMapManager != null) {
            bMapManager.start();
        }
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        if (bMapManager != null) {
            bMapManager.stop();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }

}

7.修改AndroidManifest.xml文件,指定用戶權限及對不一樣屏幕的支持

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.arlen.baidu_hello"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.arlen.baidu_hello.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
    </uses-permission>
    <uses-permission android:name="android.permission.INTERNET" >
    </uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.CALL_PHONE" >
    </uses-permission>

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="false"
        android:resizeable="true"
        android:smallScreens="true" />

</manifest>

8.至此,全部的工做基本完成,下面是運行效果圖:

模擬器:

真機測試:

相關文章
相關標籤/搜索