百度地图使用

对于百度地图的使用你需要有一个前提,即你已经搭建好了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();
  }

最后运行程序,就产生了百度地图界面。

上面代码运行的结果呢,第一是显示百度地图,第二是实现定位。

相关推荐