文档章节

使用百度地图实现基本的地图显示与定位功能

htq
 htq
发布于 2016/07/26 09:42
字数 778
阅读 33
收藏 0

最近在项目中用到了地图显示与定位功能,那么毫无疑问首选百度地图,关于百度地图的基本使用在其官网介绍的十分详细,而且还附带程序Demo代码供大家参考。链接:点击打开链接。注意在自己的项目中使用百度地图需要先注册一个百度开发者账号,然后通过一些配置操作获取一个keyStore。这个不难,但是过程很琐碎,大家可以参照百度地图API官网的步骤一步一步来,这里就不详细叙述,下面给出自己项目中使用百度地图定位功能的核心代码。


public class MainActivity extends Activity {

	private MapView mMapView;
	private BaiduMap bdMap;
	public LocationClient mLocationClient = null;
	boolean firstLoc=true; //是否首次定位
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      //在使用SDK各组件之前初始化context信息,传入ApplicationContext  
        //注意该方法要再setContentView方法之前实现  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main); 
        initView();
        initData();

    }


    void initView()
    {
    	  mMapView = (MapView) findViewById(R.id.bmapView);
    	  bdMap = mMapView.getMap();
    }
    void initData()
    {

    //	MapStatusUpdate update=MapStatusUpdateFactory.zoomTo(21);
    //	bdMap.setMapStatus(update);
    	
    	bdMap.setMyLocationEnabled(true);//开启定位图层
    	mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类
        mLocationClient.registerLocationListener(mLocationClientListener);    
        mLocationClient.start();

       
    }
    private BDLocationListener mLocationClientListener =new BDLocationListener() {


		@Override
		public void onReceiveLocation(BDLocation arg0) {
			// TODO Auto-generated method stub
			if(arg0==null)
				return;
			
			float  accuracy= arg0.getRadius();
			double  lat=  arg0.getLatitude();
			double  lon= arg0.getLongitude();
    		
    		 MyLocationData.Builder build=new  MyLocationData.Builder();
    			build.accuracy(accuracy);
    			build.latitude(lat);
    			build.longitude(lon);
    			MyLocationData myLocationData=build.build();
    			bdMap.setMyLocationData(myLocationData);//设置定位数据
    		
			if (firstLoc) {
				firstLoc = false;

				MapStatus.Builder mapStatusBuilder = new MapStatus.Builder();
				LatLng ll = new LatLng(lat, lon);
				mapStatusBuilder.target(ll);
				//mapStatusBuilder.zoom(18.0f);

				MapStatus mapStatus = mapStatusBuilder.build();
				MapStatusUpdate mapUpdate = MapStatusUpdateFactory
						.newMapStatus(mapStatus);
				bdMap.animateMapStatus(mapUpdate);

			}
		}
    };
    
    
    
    protected void onDestroy() {  
        super.onDestroy();  
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
        locationClient.stop();
        bdMap.setMyLocationEnabled(false);
        mMapView.onDestroy();  
    }  
    @Override  
    protected void onResume() {  
        super.onResume();  
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
        mMapView.onResume();  
        }  
    @Override  
    protected void onPause() {  
        super.onPause();  
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
        mMapView.onPause();  
        }  

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}
代码注释已经十分详细了,相信大家也看的懂,关于每个API的详细功能请参考百度地图API官网相关信息。

看一下运行结果,不知道为何在模拟器上运行定位结果不太准确,但是可以看到定位功能已经显示出来了(第一张图),在自己手机上定位还是非常准的(第二张图)截图如下:



希望本博客可以帮到需要在自己的项目中使用百度地图定位功能的小伙伴们,当然本博客只给出了最核心的代码,之所以给出最核心的代码是因为最核心的东西往往能最简洁的说明使用百度地图的逻辑过程,其余的一下显示方面的细节代码大家可以参考官方Demo的代码。


如果读者觉得本博客写的不错,记得小手一抖,点个赞哦!另外欢迎大家关注我的博客账号哦,将会不定期的为大家分享技术干货,福利多多哦!

本文转载自:http://blog.csdn.net/htq__/article/details/51804327

共有 人打赏支持
htq

htq

粉丝 19
博文 67
码字总数 1007
作品 3
武汉
私信 提问
【iOS】苹果,百度Map定位使用与总结

iOS中使用较多的3款地图,google地图、百度地图、苹果自带地图(高德)。其中苹果自带地图在中国使用的是高德的数据。苹果在iOS 6之后放弃了使用谷歌地图,而改用自家的地图。在国内使用的较...

xn4545945
2014/08/28
0
0
二、android百度地图定位显示当前位置(android百度地图SDK系列)

上一篇文章,我们知道了如何集成百度地图并且显示出来,那么这一篇文章我们就来看看如何对百度地图进行需要的设置以及定位并且显示当前的位置。 一、android集成百度地图(android百度地图SDK...

猫儿不吃鱼鱼
2017/10/09
0
0
一、android集成百度地图(android百度地图SDK系列)

总所周知,百度地图SDK是出了名的X,他的隔壁邻居高德简直就是良心。但是很多时候用哪个并不是我们自己能左右的。这不,新项目必须使用百度地图(我:老板,能用高德吗?老板:不能。我:一万...

猫儿不吃鱼鱼
2017/10/09
0
0
百度地图SDK初步学习——环境配置

最近想在手机上开发地图,做一个TraceMe的应用。主要实现的功能是定位和追踪。 使用IDE是Intellij IDEA 12,和eclipse略有不同。 经过2天的学习,已经实现了定位的功能。 一开始想使用谷歌地...

HenryHsu
2013/12/02
0
0
ios百度地图的使用(基本定位和地理编码)

在这里就不在介绍百度的具体配置,配置详见http://developer.baidu.com/map/index.php?title=iossdk 1.首先接受基本的地图功能 新建一个地图类,xib拖也行,我这边是代码实现的。 _mapView =...

浅唱那回忆
2014/08/13
0
3

没有更多内容

加载失败,请刷新页面

加载更多

如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
39分钟前
0
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
56分钟前
2
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxCool
今天
1
0
携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
今天
1
0
远程获得的有趣的linux命令

使用这些工具从远程了解天气、阅读资料等。 我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你有一直在看,如果没有,请回到开始,从头看过来。你会发现 Linux 终端有很多游戏、消遣和...

Linux就该这么学
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部