百度地图使用
对于百度地图的使用你需要有一个前提,即你已经搭建好了javaJDK和androidSDK还有eclipse平台。保证自己的电脑能够运行android项目。
准备条件:
第一步,获取百度移动地图API密钥。
打开网址http://dev.baidu.com/wiki/static/imap/key/,然后完成页面上面的要求就可以得到androidApi密钥(用于学习百度地图的使用,Api是免费的)
第二步,下载得到百度API开发包。
http://dev.baidu.com/wiki/imap/index.php?title=Android%E5%B9%B3%E5%8F%B0,找到相关下载,然后下载API开发包。在API开发包中存在2个文件,一个是baidumapapi.jar,还有一个是libBMapApiEngine_v1_3_3.so,这两个文件的作用在下面细说。
项目制作:
第一,创建一个android工程项目,然后引入baidumapapi.jar文件到项目中去。
右键项目名,找到Properties,在目录下找到->javaBuildPath-接着在>Libraries中选择"AddExternalJARs",找到并选定baidumapapi.jar确定后返回,这样就可以在自己的项目中使用百度地图API了。
第二,将baidumapapi.jar拷贝到libs目录下,将libBMapApiEngine_v1_3_3.so拷贝到libs\armeabi目录下。如果libs包不存在,那么可以自己新建一个,建立libs在src同层。
baidumapapi.jar的作用是提供百度已经封装好的类的集合,有些功能我们可以直接调用这些类的接口就可以直接使用,libBMapApiEngine_v1_3_3.so的作用是百度地图API使用驱动。
这两个文件的引入一定要做的,如果没有将baidumapapi.jar添加到libs中,android程序就会无法运行MapActivity,它就会报一个错ClassNotFound(没有找到Activity类)。如果没有将libBMapApiEngine_v1_3_3.so添加,则会报一个错initClass(初始化BMapManager错误)。
第三,增加使用权限。
使用百度地图是要用到网络通信的,所以我们必须的开启一些必要的权限。在Mainfest中添加使用权限。
<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>
这里就不解释为什么需要这些权限,
第四,在Mainfest中添加android版本支持<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" /> <uses-sdk android:minSdkVersion="3" > </uses-sdk>第五,将Activity继承com.baidu.mapapi.MapActivity
public class MyMapActivity extends MapActivity { public void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.id.main);s } protected boolean isRouteDisplyed(){ return false; }
第六,在xml中设计布局和添加地图控件
添加地图控件的源码是<com.baidu.mapapi.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" />
第七,初始化自己项目Activity和初始化地图Activity
为什么要初始化地图Activity呢?百度也不是平白无故的就让你操作他的成果的,所以在这里你需要初始化他,并且将你申请的Key使用上。
BMapManager mBMapMan=null; mBMapMan=new BMapManager(getApplication()); mBMapMan.init("申请的密钥",MyMapListener); super.initMapActivity(mBMapMan); MapView bMapView=(mapView)findViewById(R.id.mapView); bMapView.setBuiltInZoomControls(true); MapController mMapController =bMapView.getController(); //得到bMapView的控制权,以用它来控制和驱动平移和缩放 GeoPoint point=new GeoPoint ((int)(39.915*1E6),(int)(116.4.4*1E6),) //给定一个经纬度构造一个GeoPoint ,单位是微度(度*1E6),这里一定要加单位,不然会显示不出地图信息。 //下面这个则是使地图显示的位置定位在point位置 mMapController.setCenter(point); mMapController.setZoom(12);
重写下面的方法,管理API
protected void onDestroy(){ if(mBMapMan!=null){ mBMapMan.destroy(); mBMapMan=null; }s uper.onDestroy(); } protected void onPause(){ if(mBMapMan!=null) { mBMapMan.stop(); } super.onPause(); } protected void onResume(){ if(mBMapMan!=null){ mBMapMan.start(); } super.onResume(); }
最后运行程序,就产生了百度地图界面。
上面代码运行的结果呢,第一是显示百度地图,第二是实现定位。