百度地图移动版API是一套基于移动互联网设备的应用程序接口,支持iOS/Android平台。通过该接口,您可以轻松访问百度服务和数据,构建功能丰富、交互性强的地图应用程序。百度地图移动版API不仅包含构建地图的基本接口,还提供了诸如定位服务、本地搜索、路线规划等数据服务,你可以根据自己的需要进行选择。
百度地图官网地址:http://developer.baidu.com/map/android-mobile-apply-key.htm
,在这个网站上你可以申请到百度地图的Key.
![](https://img-my.csdn.net/uploads/201304/20/1366452056_3986.png)
就像上边一样,应用程序名称,描述随便写写就行,然后点击生成API密钥,就会出现一个API密钥,然后复制,这个就是你要使用的百度API密钥。(是不是比Google map API申请简单的多)
在那个网站上你还可以下载百度地图相关的开发包,里边有一些源码的例子。
(一)搭建Android百度地图开发环境
如何把API添加到我的Andoid工程中?
首先在工程里新建libs文件夹,并API开发包里的baidumapapi.jar拷贝到libs根目录下,将libBMapApiEngine.so
拷贝到
在布局文件中添加百度地图的空间
特此说明,模拟器就用API 8就可以。地图、定位、搜索功能都需要BMapManager来管理,BMapManager提供四个接口,init, start, stop, destroy。建议在Application里生成BMapManager对象并初使化,在程序退出时调用destory,在需要使用sdk功能的activity的onCreate里调用start, onDestroy调用stop,或者onResume/onPause分别调用start和stop。
libs\armeabi目录下。然后在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi.jar,确定后返回,这样您就可以在您的程序中使用API了。
在Manifest清单文件中添加使用权限以及屏幕支持
<supports-screens android:largeScreens="true"
android:normalScreens="true" android:smallScreens="true"
android:resizeable="true" android:anyDensity="true" />
<!-- 添加百度地图开发的授权 -->
<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>
在布局文件中添加百度地图的空间
<!-- 添加显示百度地图的控件 -->
<com.baidu.mapapi.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
(二)演示搭建交通地图和卫星地图
在mainActivity中,mainActivity需要继承MapActivity,实现MapActivity中得protected boolean isRouteDisplayed()。下面贴出源码:
public class MainActivity extends MapActivity {
private MapView mapview;
private BMapManager bMapManager;
private String key = "544FAA71566C13CF5A3535787F12CE73970F85EA";
private MapController mapController;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapview = (MapView)this.findViewById(R.id.mapview);
bMapManager = new BMapManager(this);
bMapManager.init(key, new MKGeneralListener() {
@Override
public void onGetPermissionState(int arg0) {
if(arg0 == 300){
Toast.makeText(MainActivity.this, "您输入的key有错误!", 1);
}
}
@Override
public void onGetNetworkState(int arg0) {
// TODO Auto-generated method stub
}
});
initMapActivity(bMapManager);
//设置缩放功能
mapview.setBuiltInZoomControls(true);
mapController = mapview.getController();
//设置经纬度:成都
GeoPoint geoPoint = new GeoPoint((int)(30.659*1E6), (int)(104.065*1E6));
mapController.setCenter(geoPoint);//设置一个中心点
mapController.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;
}
}
特此说明,模拟器就用API 8就可以。地图、定位、搜索功能都需要BMapManager来管理,BMapManager提供四个接口,init, start, stop, destroy。建议在Application里生成BMapManager对象并初使化,在程序退出时调用destory,在需要使用sdk功能的activity的onCreate里调用start, onDestroy调用stop,或者onResume/onPause分别调用start和stop。
![](https://img-my.csdn.net/uploads/201304/20/1366454051_8785.png)