1.开发工具
Android开发工具有很多,开发者可根据自己的喜好进行选择。在此,我们推荐开发者使用Eclipse作为自己的开发工具,本套开发指南也是针对Eclipse开发环境下进行编写的。
2.工程配置
第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;
注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。
第二步:在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。
通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。
注意:由于adt插件升级,若您使用Eclipse adt 22的话,需要对开发环境进行相应的设置,方法如下:
1. 在Eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;
2. Project -> clean-> clean all .
3.显示地图
百度地图SDK为开发者提供了便捷的显示百度地图数据的接口,通过以下几步操作,即可在您的应用中使用百度地图数据:
第一步:创建并配置工程(具体方法参见工程配置部分的介绍);
第二步:在Manifest中添加使用权限及Android版本支持;
常用使用权限如下(开发者可根据自身程序需求,添加所需权限):
- <!--使用网络功能所需权限 -->
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
- </uses-permission>
- <uses-permission android:name="android.permission.INTERNET">
- </uses-permission>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE">
- </uses-permission>
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE">
- </uses-permission>
- <!-- SDK离线地图和cache功能需要读写外部存储器 -->
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
- </uses-permission>
- <uses-permission android:name="android.permission.WRITE_SETTINGS">
- </uses-permission>
- <!-- 获取设置信息和详情页直接拨打电话需要以下权限 -->
- <uses-permission android:name="android.permission.READ_PHONE_STATE">
- </uses-permission>
- <uses-permission android:name="android.permission.CALL_PHONE">
- </uses-permission>
- <!-- 使用定位功能所需权限,demo已集成百度定位SDK,不使用定位功能可去掉以下6项 -->
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
- </uses-permission>
- <permission android:name="android.permission.BAIDU_LOCATION_SERVICE">
- </permission>
- <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE">
- </uses-permission>
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION">
- </uses-permission>
- <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION">
- </uses-permission>
- <uses-permission android:name="android.permission.ACCESS_GPS"/>
配置Activity:
- <activity android:name=".MapDemo"
- android:screenOrientation="sensor"
- android:configChanges="orientation|keyboardHidden">
- </activity>
添加屏幕及版本支持:
- <supports-screens android:largeScreens="true"
- android:normalScreens="true"
- android:smallScreens="true"
- android:resizeable="true"
- android:anyDensity="true"/>
- <uses-sdk android:minSdkVersion="7"></uses-sdk>
第三步:在布局xml文件中添加地图控件,布局文件保存为activity_main.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="hello world" />
- <com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:clickable="true" />
- </LinearLayout>
第四步:创建地图Activity,并import相关类:
- import android.app.Activity;
- import android.content.res.Configuration;
- import android.os.Bundle;
- import android.view.Menu;
- import android.widget.FrameLayout;
- import android.widget.Toast;
- import com.baidu.mapapi.BMapManager;
- import com.baidu.mapapi.map.MKMapViewListener;
- import com.baidu.mapapi.map.MapController;
- import com.baidu.mapapi.map.MapPoi;
- import com.baidu.mapapi.map.MapView;
- import com.baidu.platform.comapi.basestruct.GeoPoint;
-
- public class MyMapActivity extends Activity{
- @Override
- public void onCreate(Bundle savedInstanceState){
- }
- }
第五步:初始化地图Activity、使用Key:
在MyMapActivity中定义成员变量:
- BMapManager mBMapMan = null;
- MapView mMapView = null;
在onCreate方法中增加以下代码,并将您申请的Key替换“我的Key”
- super.onCreate(savedInstanceState);
- mBMapMan=new BMapManager(getApplication());
- mBMapMan.init("我的Key", null);
- //注意:请在试用setContentView前初始化BMapManager对象,否则会报错
- setContentView(R.layout.activity_main);
- mMapView=(MapView)findViewById(R.id.bmapsView);
- mMapView.setBuiltInZoomControls(true);
- //设置启用内置的缩放控件
- MapController mMapController=mMapView.getController();
- // 得到mMapView的控制权,可以用它控制和驱动平移和缩放
- GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));
- //用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
- mMapController.setCenter(point);//设置地图中心点
- mMapController.setZoom(12);//设置地图zoom级别
重写以下方法,管理API
- @Override
- protected void onDestroy(){
- mMapView.destroy();
- if(mBMapMan!=null){
- mBMapMan.destroy();
- mBMapMan=null;
- }
- super.onDestroy();
- }
- @Override
- protected void onPause(){
- mMapView.onPause();
- if(mBMapMan!=null){
- mBMapMan.stop();
- }
- super.onPause();
- }
- @Override
- protected void onResume(){
- mMapView.onResume();
- if(mBMapMan!=null){
- mBMapMan.start();
- }
- super.onResume();
- }
完成以上步骤后,运行程序,即可在您的应用中显示如下地图:
以上的例子为大家介绍了如何构建一个基础的地图页面。地图控件自v2.3.5版本起,支持多实例,即开发者可以在一个页面中建立多个地图对象,并且针对这些对象分别操作且不会产生相互干扰。具体使用方法请参考MutiMapViewDemo中的相关介绍。
此外,自v2.3.5版本开始。MapView控件还增加了对Fragment框架的支持。用户可以使用SupportMapFragment控件完成相应框架内的开发工作(详见MapFragmentDemo)。
有问题一直报错但是没有X,解决方法:右击工程——properties——javabuildpath——移除 private libs
并且注意老版本<com.baidu.mapapi.MapView/>要改
再重新运行就可以看到百度地图了