昨天开始,开始玩百度SDK,一大堆问题,百度的文档太坑爹了,感觉很旧的,按照官网的配置居然错误一大堆!!!!
Now,把心得和大家分享。
一、构建项目
貌似更新了ADT插件后,jar包放在libs下不会自动编译到项目中,调试的时候一直报类找不到错误。解决办法是在libs 上点右键,将其作为源码文件夹。还有assets这个文件夹,最坑爹了!!!这个是来自于baidumapapi_v2_1_2.jar中的。不加的话有可能会报java.io.FileNotFoundException等错误。这个问题的解决参考了
二、接下来是最简单的例子
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!"); } } }}