`
zhouxuebao87
  • 浏览: 115677 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android中实现百度地图

 
阅读更多

android实现GPS定位

    实现GPS定位功能主要是引入百度地图的包import com.baidu.mapapi

   
    要引入则需要先下载百度地图移动版API开发包由于下载过程较为繁琐;我这里将提供现成的压缩文件

    如果需要,可以自由下载;

    得到API开发包后还要得到密钥,即Key;为方便大家学习,这里也将提供自由的Key;

  
只需将这密钥复制到后面的代码上就可以了(22FCFCD052AAAE640F34D608D98CDED68B0744A5)



    嗯,现在我们可以准备创建android项目了;创建好项目后、将APi开发包中的baidumap.jar文件引入
    到项目名下;其步骤是:右键项目名,找到Properties,在目录下找到->java Build Path-接着在

    >Libraries中选择"Add JARs",找到并选定baidumapapi.jar;这样就可以使用API了。

   
   
    由于版本不同的原因、有些项目里面没有libs文件夹,如果有的话就不用新建了;然后再将
    baidumap.jar文件复制到libs文件中、还要将libBMapApiEngine_v1_3_3.so复制到工程目录下的libs
    \armeabi。


  在敲入代码之前、我们需要增加地图的使用权限;在Mainfest中、增加使用者的权限:

其代码是:


Java代码 复制代码 收藏代码
  1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >   
  2.     </uses-permission>   
  3.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >   
  4.     </uses-permission>   
  5.     <uses-permission android:name="android.permission.INTERNET" >   
  6.     </uses-permission>   
  7.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >   
  8.     </uses-permission>   
  9.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >   
  10.     </uses-permission>   
  11.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >   
  12.     </uses-permission>   
  13.     <uses-permission android:name="android.permission.READ_PHONE_STATE" >   
  14.     </uses-permission>  
<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权限、但我的就不需要增加;如果需要;可以试

试下面的代码;

Java代码 复制代码 收藏代码
  1. <com.baidu.mapapi.MapView   
  2.        android:id="@+id/bmapView"  
  3.        android:layout_width="fill_parent"  
  4.        android:layout_height="fill_parent"  
  5.        android:clickable="true" />  
 <com.baidu.mapapi.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />





接着便是写主函数Activity的类了,其继承MapActivity的类、

先声明需要的对象:

Java代码 复制代码 收藏代码
  1.         BMapManager mBMapMan=null;//地图管理者     
  2. MapView bMapView;//视图     
  3. LocationListener locationlistener;//位置动作监听器     
  4. MyLocationOverlay mLocationOverlay;//地图覆盖物   
         BMapManager mBMapMan=null;//地图管理者  
	MapView bMapView;//视图  
	LocationListener locationlistener;//位置动作监听器  
	MyLocationOverlay mLocationOverlay;//地图覆盖物 




然后,在主函数中创建百度地图的主对象;调用使用密钥参数的方法;接着初始化视图和找到空间视图。

Java代码 复制代码 收藏代码
  1. //创建百度地图管理者   
  2.         mBMapMan=new BMapManager(getApplication());   
  3.         mBMapMan.init("22FCFCD052AAAE640F34D608D98CDED68B0744A5",null);   
  4. //第一个参数就是你申请的key码   
  5.         super.initMapActivity(mBMapMan);//初始化百度地图    
  6.         bMapView=(MapView)findViewById(R.id.bmapView);//找到控件视图  
//创建百度地图管理者
        mBMapMan=new BMapManager(getApplication());
        mBMapMan.init("22FCFCD052AAAE640F34D608D98CDED68B0744A5",null);
//第一个参数就是你申请的key码
        super.initMapActivity(mBMapMan);//初始化百度地图 
        bMapView=(MapView)findViewById(R.id.bmapView);//找到控件视图



接着设置内置的缩放控件和控件视图的控制权;

Java代码 复制代码 收藏代码
  1. bMapView.setBuiltInZoomControls(true);//设置启动内置的缩放控件    
  2.         MapController mMapController =bMapView.getController();//得到bMapView的控制权,  
bMapView.setBuiltInZoomControls(true);//设置启动内置的缩放控件 
        MapController mMapController =bMapView.getController();//得到bMapView的控制权,



设置一个经纬度、然后将此坐标作为地图的中心位置;顺便还要设置地图的大小的级别。


Java代码 复制代码 收藏代码
  1. //给定一个经纬度构造一个GeoPoint ,单位是微度(度*1E6)   
  2.         GeoPoint point=new GeoPoint ((int)(39.915*1E6),(int)(116.404*1E6));     
  3.         mMapController.setCenter(point);//设置地图中心点   
  4.         mMapController.setZoom(12);//设置地图zoom级别   
  5.         //获取当前位置的覆盖物     
  6.         mLocationOverlay=new MyLocationOverlay(this,bMapView);     
  7.         //添加定位覆盖物     
  8.         bMapView.getOverlays().add(mLocationOverlay);   
//给定一个经纬度构造一个GeoPoint ,单位是微度(度*1E6)
        GeoPoint point=new GeoPoint ((int)(39.915*1E6),(int)(116.404*1E6));  
        mMapController.setCenter(point);//设置地图中心点
        mMapController.setZoom(12);//设置地图zoom级别
        //获取当前位置的覆盖物  
        mLocationOverlay=new MyLocationOverlay(this,bMapView);  
        //添加定位覆盖物  
        bMapView.getOverlays().add(mLocationOverlay); 




定义位置监听器、获取地图位置

Java代码 复制代码 收藏代码
  1. //定义位置监听器     
  2.         locationlistener=new LocationListener() {     
  3.             public void onLocationChanged(Location location) {     
  4.                 //当位置改变时,获取当前经纬度     
  5.                 if (location != null){     
  6.                    //获取位置经纬度     
  7.                     GeoPoint pt = new GeoPoint((int)(location.getLatitude()*1e6),     
  8.                            (int)(location.getLongitude()*1e6));     
  9.                     //将视图中心定位到所在经纬度     
  10.                     bMapView.getController().animateTo(pt);     
  11.                 }     
  12.            }     
  13.                
  14.         };  
//定义位置监听器  
        locationlistener=new LocationListener() {  
            public void onLocationChanged(Location location) {  
                //当位置改变时,获取当前经纬度  
                if (location != null){  
                   //获取位置经纬度  
                    GeoPoint pt = new GeoPoint((int)(location.getLatitude()*1e6),  
                           (int)(location.getLongitude()*1e6));  
                    //将视图中心定位到所在经纬度  
                    bMapView.getController().animateTo(pt);  
                }  
           }  
            
        };





根据管理者、更新地图位置

Java代码 复制代码 收藏代码
  1. protected void onResume(){     
  2.             // 获取位置管理者,视图根据位置监听更新位置     
  3.             mBMapMan.getLocationManager().requestLocationUpdates(locationlistener);     
  4.             //打开定位图标     
  5.            mLocationOverlay.enableMyLocation();     
  6.             // 打开指南针     
  7.             mLocationOverlay.enableCompass();     
  8.             //启动管理着     
  9.             mBMapMan.start();     
  10.             super.onResume();     
  11.    }  
 protected void onResume(){  
    	        // 获取位置管理者,视图根据位置监听更新位置  
    	        mBMapMan.getLocationManager().requestLocationUpdates(locationlistener);  
    	        //打开定位图标  
    	       mLocationOverlay.enableMyLocation();  
    	        // 打开指南针  
    	        mLocationOverlay.enableCompass();  
    	        //启动管理着  
    	        mBMapMan.start();  
    	        super.onResume();  
    }



这样、android百度地图就可以在手机上实现了。。。如果还有报错话、那就是主函数中要求添加一个判断方法;此方法不需要重写;其作用目前还不清楚。。。

由于文件上传有问题,所以这里提供下载的地址;
http://dev.baidu.com/wiki/imap/index.php?title=Android%E5%B9%B3%E5%8F%B0/%E7%9B%B8%E5%85%B3%E4%B8%8B%E8%BD%BD


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics