文档章节

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

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系列)

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

猫儿不吃鱼鱼
2017/10/09
0
0
二、android百度地图定位显示当前位置(android百度地图SDK系列)

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

猫儿不吃鱼鱼
2017/10/09
0
0
ios百度地图的使用(基本定位和地理编码)

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

浅唱那回忆
2014/08/13
0
3
百度地图SDK初步学习——环境配置

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

HenryHsu
2013/12/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL Replication 梳理详解

MySQL Replication 1 MySQL5.5以前的复制 异步、SQL线程串行化回放 MySQL内建的复制功能是构建大型,高性能应用程序的基础。主服务器将更新写入二进制日志文件,从服务器重新执行一遍来实现的...

PeakFang-BOK
今天
1
0
.NET Core & ConsoleApp & appsettings.json

准备 Visual Studio 2017 .NET Core 2.1 新建控制台应用(.NET Core) 默认的 Program.cs // Program.csusing System;namespace ConsoleApp1{ class Program { static voi......

taadis
今天
2
0
结合lucene谈谈日期的压缩问题

说起日期值的压缩,一般容易想到的办法是将日期转化成long类型,然后再通过变长整形进行压缩,我算了一下按照毫秒来算最多占用5个字节(可以通过“谈谈变长整型”中的表查看),确实节省了部...

FAT_mt
今天
1
0
导出私有函数与私有变量

在Go语言中, package中包含函数与变量通过identifier的首字母是否大写来决定它是否可以被其它package所访问。当一个函数或变量名称为小写字母时,默认是无法被其他package引用的. 有没有办法...

xtof
今天
2
0
new Date() 在Safari下的 Invalid Date问题

问题复现 var timeStr = '2018-11-11 00:00:00';var time = new Date(timeStr);// error: Invalid Date... 在safari浏览器下,time为Invalid Date, 导致后面代码执行错误; 其他浏览器诸...

会写代码的husky
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部