文档章节

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

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
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
二、android百度地图定位显示当前位置(android百度地图SDK系列)

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

猫儿不吃鱼鱼
2017/10/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Bash重定向详解

Bash重定向详解 Bash的重定向指的是将命令的输入和输出导向不同地方,而不是默认的标准输入、标准输出和标准错误。Bash的重定向实际上是对标准输入、标准输出和标准错误的重置,进而将所需输...

小陶小陶
今天
3
0
EventBus原理深度解析

一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于Event...

yangjianzhou
今天
12
0
OpenCV图像处理实例:libuv+cvui显示摄像头视频

#include <iostream>#include <opencv2/opencv.hpp>#define CVUI_IMPLEMENTATION#include <cvui.h>extern "C"{#include <uv.h>}using namespace std;#define WINDOW_NAM......

IOTService
今天
3
0
openJDK之JDK9的String

1.openJDK8的String 先来看下openJDK8的String的底层,如下图1.1所示: 图1.1 底层上使用的是char[],即char数组 每个char占16个bit,Character.SIZE的值是16。 2.openJDK9中的String 图2.1...

克虏伯
今天
4
0
UEFI 模式下如何安装 Ubuntu 16.04

作者:知乎用户 链接:https://www.zhihu.com/question/52092661/answer/259583475 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 针对UEFI模式下安装U...

寻知者
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部