百度地图移动版 API for android
开发指南
2012.06.20
CopyRight @ Baidu.com
1 简介
什么是百度地图 API?
百度地图移动版 API(Android)是一套基于 Android 1.5 及以上设备的应用程序接口,通过该接口,
您可以轻松访问百度服务和数据,构建功能丰富、交互性强的地图应用程序。百度地图移动版 API
不仅包含构建地图的基本接口,还提供了诸如地图定位、本地搜索、路线规划等数据服务,你可以根
据自己的需要进行选择。
面向的读者
API 是提供给那些具有一定 Android 编程经验和了解面向对象概念的读者使用。此外,读者还应该对
地图产品有一定的了解。
您在使用中遇到任何问题,都可以通过 API 贴吧或交流群反馈给我们。
获取 API Key
用户在使用 API 之前需要获取百度地图移动版 API Key,该 Key 与你的百度账户相关联,您必须先有
百度帐户,才能获得 API KEY。并且,该 KEY 与您引用 API 的程序名称有关,具体流程请参照获取
密钥。
兼容性
支持 Android 1.5 及以上系统。
2 在您的地图中显示
如何把 API 添加到我的 Android 工程中?
首先将 API 包括的两个文件 baidumapapi.jar 和 libBMapApiEngine_v1_3_3.so 拷贝到工程根目录及
libs\armeabi 目录下,并在工程属性->Java Build Path->Libraries 中选择“Add JARs”,选定 baidumapapi.jar,
确定后返回,这样您就可以在您的程序中使用 API 了。
百度地图的“Hello,World”
在 Manifest 中添加使用权限
0.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-per
mission>
1.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-per
mission>
2.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
3.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-p
ermission>
4.
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permis
sion>
5.
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permis
sion>
6.
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permiss
ion>
在 Manifest 中添加 Android 版本支持
0.
<supports-screens android:largeScreens="true" android:normalScreens="true" androi
d:smallScreens="true" android:resizeable="true" android:anyDensity="true"/>
1.
<uses-sdk android:minSdkVersion="3"></uses-sdk>
让创建的地图 Activity 继承 com.baidu.mapapi.MapActivity, 并 import 相关类
0.
import java.util.ArrayList;
1.
import java.util.List;
2.
import android.content.Context;
3.
import android.graphics.Canvas;
4.
import android.graphics.Paint;
5.
import android.graphics.Point;
6.
import android.graphics.drawable.Drawable;
7.
import android.location.Location;
8.
import android.os.Bundle;
9.
import android.util.Log;
10.
import android.view.View;
11.
import android.widget.Toast;
12.
import com.baidu.mapapi.BMapManager;
13.
import com.baidu.mapapi.GeoPoint;
14.
import com.baidu.mapapi.ItemizedOverlay;
15.
import com.baidu.mapapi.LocationListener;
16.
import com.baidu.mapapi.MKAddrInfo;
17.
import com.baidu.mapapi.MKDrivingRouteResult;
18.
import com.baidu.mapapi.MKGeneralListener;
19.
import com.baidu.mapapi.MKLocationManager;
20.
import com.baidu.mapapi.MKPlanNode;
21.
import com.baidu.mapapi.MKPoiResult;
22.
import com.baidu.mapapi.MKSearch;
23.
import com.baidu.mapapi.MKSearchListener;
24.
import com.baidu.mapapi.MKTransitRouteResult;
25.
import com.baidu.mapapi.MKWalkingRouteResult;
26.
import com.baidu.mapapi.MKSuggestionResult;
27.
import com.baidu.mapapi.MapActivity;
28.
import com.baidu.mapapi.MapController;
29.
import com.baidu.mapapi.MapView;
30.
import com.baidu.mapapi.MyLocationOverlay;
31.
import com.baidu.mapapi.Overlay;
32.
import com.baidu.mapapi.OverlayItem;
33.
import com.baidu.mapapi.PoiOverlay;
34.
import com.baidu.mapapi.RouteOverlay;
35.
import com.baidu.mapapi.TransitOverlay;
36.
37.
public class MyMapActivity extends MapActivity {
38.
@Override
39.
public void onCreate(Bundle savedInstanceState) {
40.
super.onCreate(savedInstanceState);
41.
setContentView(R.layout.main);
42.
}
43.
44.
@Override
45.
protected boolean isRouteDisplayed() {
46.
return false;
47.
}
48.
}
在布局 xml 中添加地图控件
0.
<?xml version="1.0" encoding="utf-8"?>
1.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:or
ientation="vertical" android:layout_width="fill_parent" android:layout_height="f
ill_parent">
2.
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content
" android:text="@string/hello" />
3.
<com.baidu.mapapi.MapView android:id="@+id/bmapsView" android:layout_width="fill
_parent" android:layout_height="fill_parent" android:clickable="true" />
4.
</LinearLayout>
初始化地图 Activity
在地图 Activity 中定义变量: BMapManager mBMapMan = null; 在 onCreate 方法中增加以下代码,
并将您申请的 Key 替换“我的 Key”:
0.
mBMapMan = new BMapManager(getApplication());
1.
mBMapMan.init("
我的
Key", null);
2.
super.initMapActivity(mBMapMan);
3.
MapView mMapView = (MapView) findViewById(R.id.bmapsView);
4.
mMapView.setBuiltInZoomControls(true);
//
设置启用内置的缩放控件
5.
MapController mMapController = mMapView.getController();
//
得到
mMapView
的控制权
,
可
以用它控制和驱动平移和缩放
6.
GeoPoint point = new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6));
//
用
给定的经纬度构造一个
GeoPoint
,单位是微度
(
度
* 1E6)
7.
mMapController.setCenter(point);
//
设置地图中心点
8.
mMapController.setZoom(12);
//
设置地图
zoom
级别
Override 以下方法,管理 API:
0.
@Override
1.
protected void onDestroy() {
2.
if (mBMapMan != null) {
3.
mBMapMan.destroy();
4.
mBMapMan = null;
5.
}
6.
super.onDestroy();
7.
}
8.
@Override
9.
protected void onPause() {
10.
if (mBMapMan != null) {
11.
mBMapMan.stop();
12.
}
13.
super.onPause();
14.
}
15.
@Override
16.
protected void onResume() {
17.
if (mBMapMan != null) {
18.
mBMapMan.start();
19.
}
20.
super.onResume();
21.
}
完成上述步骤后,运行程序,结果如下: