转载请标明:http://blog.csdn.net/u012637501/article/details/45588377
一、Eclipse工程环境配置
1.下载SDK与申请Key
参见http://developer.baidu.com/map/index.php?title=androidsdk/guide/key。需要注意的是,在执行keytool命令出现命令不存在异常。keytool工具在JDK的bin文件夹下面,可以将bin目录的绝对路径添加到PATH环境变量中即可。
百度地图开发者:http://developer.baidu.com/map/
2.添加jar包、.so文件到工程
在工程里新建libs文件夹,将开发包里的BaiduLBS_Android.jar(基础地图&定位)拷贝到libs根目录下,将libBaiduMapSDK_v3_4_0_7.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;
3.勾选" Android Private Libraries"
由于adt插件升级,若您使用Eclipse adt 22及以上的话,需要对开发环境进行相应的设置,方法如下:
(1)在Eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;
(2) Project -> clean
4.
在AndroidManifest.xml中添加开发密钥、所需权限等信息
由于要调用百度地图的相关数据,因此需要添加相应的权限,我们可以通过查看下载的百度地图的示例文件,从它的AndroidManifest.xml中进行拷贝即可,或者运行时根据提示信息一个个进行添加。
(1)在application中添加开发密钥与对屏幕的支持
- <!-- 添加对屏幕的支持 -->
- <supports-screens
- android:largeScreens="true"
- android:normalScreens="true" android:smallScreens="true"
- android:resizeable="true" android:anyDensity="true"/>
- <application>
- <meta-data
- android:name="com.baidu.lbsapi.API_KEY"
- android:value="开发者申请的 key" />
- </application>
(2)添加所需权限
- <uses-permission android:name="android.permission.GET_ACCOUNTS" />
- <uses-permission android:name="android.permission.USE_CREDENTIALS" />
- <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
- <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- <uses-permission android:name="android.permission.READ_PHONE_STATE" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.BROADCAST_STICKY" />
- <uses-permission android:name="android.permission.WRITE_SETTINGS" />
二、百度地图SDK的核心API介绍
1.SDKInitializer类
(1)作用:初始化 SDK context 全局变量,指定
sdcard 路径
(2)静态成员变量
static SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR :网络错误广播 action string
static SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR :|key 验证失败广播 action string
static SDK_BROADTCAST_INTENT_EXTRA_INFO_KEY_ERROR_CODE :key 验证失败广播 intent 中附加信息错误码键
(3)静态成员方法
static void |
initialize(Context context)
初始化全局 context。 |
static void |
initialize(java.lang.String sdcardPath,
初始化全局 context,指定 sdcard 路径,若采用默认路径,请使用initialize(Context context) 重载函数 |
2.MapView类
(1)作用
一个显示地图的视图(View),它负责从服务端获取地图数据。它将会捕捉屏幕触控手势事件,
使用这个类必须按照它的生命周期进行操控,你必须参照以下方法onCreate(Bundle)、 onResume()、onPause()、onDestroy()等声明周期函数。在使用地图组件之前请确保已经调用了 SDKInitializer.initialize(Context) 函数以提供全局 Context 信息。
(2)构造方法
MapView(Context context)
根据给定的上下文参数构造一个MapView 的新对象
(3)常用方法
void addView(View child, LayoutParams params) :向MapView中添加一个子View。
BaiduMap getMap() :获取地图控制器BaiduMap对象
void onDestroy() :当Activity销毁时调用地图的销毁
void onPause() :当Activity暂停的时候调用地图暂停
void onResume() :当Activity唤醒是调用地图唤醒
void removeView(View view) :|从MapView中移除一个子View
void setScaleControlPosition(Point p): 设置比例尺控件的位置,在 onMapLoadFinish 后生效
void setZoomControlsPosition(Point p) :设置缩放控件的位置,在 onMapLoadFinish 后生效
void showScaleControl(boolean show) :设置是否显示比例尺控件
void showZoomControls(boolean show): 设置是否显示缩放控件
参考文档:http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v3_4_0/
三、百度地图实例
1.在布局xml文件中添加地图控件
- <com.baidu.mapapi.map.MapView
- android:id="@+id/bmapView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:clickable="true" />
2.在应用程序创建时初始化 SDK引用的Context 全局变量
在SDK各功能组件使用之前都需要调用SDKInitializer.initialize(getApplicationContext());该方法要再setContentView方法之前实现。
3.创建地图Activity,启动地图并管理地图生命周期
- package base.baidu.oncampus;
- import android.app.Activity;
- import android.os.Bundle;
- import com.baidu.mapapi.SDKInitializer;
- import com.baidu.mapapi.map.MapView;
- public class MainActivity extends Activity {
- MapView mapView = null;
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- SDKInitializer.initialize(getApplicationContext()); //在使用SDK各组件之前初始化context信息,传入AplicationContext
- setContentView(R.layout.main);
- mapView = (MapView)findViewById(R.id.bmapView); //获取地图控件引用
- }
- @Override
- protected void onDestroy() {
- mapView.onDestroy(); //关闭百度地图
- super.onDestroy();
- }
- @Override
- protected void onPause() {
- mapView.onPause(); //暂停使用百度地图
- super.onPause();
- }
- @Override
- protected void onResume() {
- mapView.onResume(); //恢复使用百度地图
- super.onResume();
- }
- }
运行结果:
参考资料:
http://developer.baidu.com/map/index.php?title=androidsdk/guide/buildproject