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开发指南

 全部下载

Android百度地图开发(一)环境搭建_第1张图片

2.申请密钥key

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

3.建立项目

Android百度地图开发(一)环境搭建_第2张图片

4.导入jar包

将实例中的libs文件夹拷贝到项目中,然后选中baidumapapi.jar,右键--〉build path-->add to build path

Android百度地图开发(一)环境搭建_第3张图片

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

模拟器:

Android百度地图开发(一)环境搭建_第4张图片

真机测试:

Android百度地图开发(一)环境搭建_第5张图片

 

 

你可能感兴趣的:(android)