`
lixiongzhi_m
  • 浏览: 60797 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

android实现百度地图定位

阅读更多
[size=large]  百度地图的实现、

一、首先电脑上必须搭建好java环境平台、创建好eclipse运行环境和搭建好android运行环境。
二、登录http://dev.baidu.com/wiki/static/imap/key/网站,然后按照上面的要求就可以得到android Api Key(key在初始化地图的时候要用到)(Api是免费的)和api开发包、
三、创建android新项目
    引入api开发包中的baidumap.jar文件引入到项目中  
    具体操作:右键项目名,找到Properties,在目录下找到->java Build Path-接着在>Libraries中选择"Add JARs",找到并选定baidumapapi.jar确定后返回,这样就可以在自己的项目中使用百度地图API了。

   同时在工程里新建libs文件夹(要是本来就有就不用新建了,由于eclipse版本不一样,有的有,有的没有),然后把baidumap.jar这个文件弄到libs文件夹里,将libBMapApiEngine_v1_3_3.so复制到工程目录下的libs\armeabi。

做好了这些前期工作便可可以开始实现百度地图了、

1、增加使用权限
   使用百度地图是要用到网络通信的,所以我们必须的开启一些必要的权限。在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>


2、在Mainfest中添加android版本支持
<supports-screens android:largeScreens="true"
   android:normalScreens="true"
   android:smallScreens="true"
   android:rresizeable="true"
   anddroid:anyDensity="true"/>
<uses_sdk android:minSdkVersion="3"></uses_sdk>

这里可能会出错、具体导致的原因我还不是很清楚、要是出错、可以先不写版本支持。同样可以实现、


3、布局文件中添加入地图面板也就是百度地图
 <com.baidu.mapapi.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />



4、创建一个Activity,并且继承com.baidu.mapapi.MapActivity,因为我们是对百度地图操作,其实质是我们重写他原有的Activity。
public class MainActivity extends MapActivity {
	BMapManager mBMapMan=null;//地图管理者
	MapView bMapView;//视图
	LocationListener locationlistener;//位置动作监听器
	MyLocationOverlay mLocationOverlay;//地图覆盖物

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
    mBMapMan=new BMapManager(getApplication());//创建百度地图管理者
    mBMapMan.init("你申请的key所对应的编码",null);//第一个参数就是你申请的key码
    super.initMapActivity(mBMapMan);//初始化百度地图
    
    bMapView=(MapView)findViewById(R.id.bmapView);//找到控件视图
 
    bMapView.setBuiltInZoomControls(true);//设置启动内置的缩放控件
    MapController mMapController =bMapView.getController();//得到bMapView的控制权,
   
     //给定一个经纬度构造一个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);
      


   上面涉及到的地图管理者:就是一个BMapManager类,地图、定位、搜索功能都需要BMapManager来管理,BMapManager提供四个接口,init, start, stop, destroy。建议在Application里生成BMapManager对象并初使化,在程序退出时调用destory,在需要使用sdk功能的activity的onCreate里调用start, onDestroy调用stop,或者onResume/onPause分别调用start和stop。
    地图覆盖物是指覆盖或叠加到地图上的内容,比如一些图标,坐标什么的。比如定位图标就是一个覆盖物、
     MapView就是整张的地图

这样上面只哟调用mBMapMan.start()方法启动管理者,便可以显示百度地图了。


接下来实现定位
 //定义位置监听器
      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);
			}
		}
		
	};




protected void onResume(){
		// 获取位置管理者,视图根据位置监听更新位置
        mBMapMan.getLocationManager().requestLocationUpdates(locationlistener);
        //打开定位图标
        mLocationOverlay.enableMyLocation();
        // 打开指南针
        mLocationOverlay.enableCompass();
        //启动管理着
		mBMapMan.start();
		super.onResume();
	}
	


这样就实现了定位了、



调用地图MapVie对象的方法
可以显示交通路线图
 //显示交通路线
      bMapView.setTraffic(true);

卫星图
 //显示卫星图
      bMapView.setSatellite(true);
[/size]
分享到:
评论
5 楼 zendly 2014-09-14  
参考最新的百度API吧
4 楼 lixiongzhi_m 2014-09-09  
这个估计快两年前的了,百度地图api都更新了不少了。不知道还能不能用呢。
3 楼 zendly 2014-09-07  
学习啦。楼主赞。!!
2 楼 tangyunliang 2013-11-09  
学习了
1 楼 wangsz052 2013-07-16  
学习,正好需要

相关推荐

Global site tag (gtag.js) - Google Analytics