Android百度地图开发(一)环境搭建

1.百度地图官方API文档下载

版本  使用说明 下载
Android SDK
通用资源下载

《离线地图》提供新版离线地图(百度矢量地图)与旧版离线地图(百度栅格地图)下载。

备注:

  • 自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文件。

2. 该版本SDK提供矢量版地图。

3. Lib库和示例代码下载包中均含有readme.txt,可阅读参考,有助您的开发。

4. 若使用离线地图,请下载矢量版离线地图。注意:请参阅开发指南_离线地图说明,导入至BaiduMapSdk文件夹。

5. 注意:自v2.1.3版本起,SDK采用了全新的Key验证体系,如果您选择使用v2.1.3及以后的版本,需申请全新的Key。(点击查看申请流程

Android SDKv2.2.0 lib库

Android SDKv2.2.0 类参考

Android SDKv2.2.0 示例代码

 全部下载  

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.至此,所有的工作基本完成,下面是运行效果图:

模拟器:

真机测试:

 

 

posted @ 2013-10-08 23:12  若。只如初见  阅读(2286)  评论(0编辑  收藏  举报