昨天开始,开始玩百度SDK,一大堆问题,百度的文档太坑爹了,感觉很旧的,按照官网的配置居然错误一大堆!!!!
Now,把心得和大家分享。
一、构建项目
貌似更新了ADT插件后,jar包放在libs下不会自动编译到项目中,调试的时候一直报类找不到错误。解决办法是在libs 上点右键,将其作为源码文件夹。还有assets这个文件夹,最坑爹了!!!这个是来自于baidumapapi_v2_1_2.jar中的。不加的话有可能会报java.io.FileNotFoundException等错误。这个问题的解决参考了http://www.oschina.net/question/234275_76708
二、接下来是最简单的例子
package xidian.wwf.xidianmap.activity;
import xidian.wwf.xidianmap.R;
import xidian.wwf.xidianmap.app.AppManager;
import xidian.wwf.xidianmap.app.UIHelper;
import android.os.Bundle;
import android.util.Log;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.map.MKEvent;
import com.baidu.mapapi.map.MKMapViewListener;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;
public class MainActivity extends BaseActivity {
final static String TAG = "MainActivity";
BMapManager mBMapMan = null;
/**
* MapView 是地图主控件
*/
MapView mMapView = null;
/**
* 用MapController完成地图控制
*/
MapController mMapController = null;
/**
* MKMapViewListener 用于处理地图事件回调
*/
MKMapViewListener mMapListener = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* 它需要地图模块创建前创建,
* 并在地图地图模块销毁后销毁,只要还有地图模块在使用,BMapManager就不应该销毁
*/
mBMapMan = new BMapManager(getApplication());
mBMapMan.init(AppManager.baiduStrKey, new MyGeneralListener());
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.bmapView);
mMapView.setBuiltInZoomControls(true);
// 设置启用内置的缩放控件
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级别
}
@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();
}
// 常用事件监听,用来处理通常的网络错误,授权验证错误等
class MyGeneralListener implements MKGeneralListener {
@Override
public void onGetNetworkState(int iError) {
Log.e("ee", String.valueOf(iError));
if (iError == MKEvent.ERROR_NETWORK_CONNECT) {
UIHelper.ToastMessage(MainActivity.this, "您的网络出错啦!");
} else if (iError == MKEvent.ERROR_NETWORK_DATA) {
UIHelper.ToastMessage(MainActivity.this, "输入正确的检索条件!");
}
}
@Override
public void onGetPermissionState(int iError) {
if (iError == MKEvent.ERROR_PERMISSION_DENIED) {
// 授权Key错误:
UIHelper.ToastMessage(MainActivity.this, "请在输入正确的授权Key!");
}
}
}
}