`
大头K
  • 浏览: 183028 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

基于百度地图实现的实时定位功能(含项目代码)

阅读更多
这段时间经常接触百度地图API,每次用的时候都会重新下demo,确实浪费时间。今天有时候就整理一下代码。博文底部有项目代码链接。

以下贴出来的是百度的定位功能的实现:
先看看效果:


MyApplication.class:
package com.liucanwen.baidulocation;

import android.app.Application;
import android.content.Intent;
import android.os.Process;
import android.util.Log;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.GeofenceClient;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;

public class MyApplication extends Application
{
	public LocationClient mLocationClient = null;
	public GeofenceClient mGeofenceClient;
	public MyLocationListenner myListener = new MyLocationListenner();
	public static String TAG = "MyApplication";
	
	private static MyApplication mInstance = null;

	@Override
	public void onCreate()
	{
		mInstance = this;
		
		mLocationClient = new LocationClient(this);

		/**
		 * 项目的key,自己到官网申请 http://lbsyun.baidu.com/apiconsole/key
		 */
		mLocationClient.setAK("0zY5wx1STQSzyaNv4Tvr7z0R");
		mLocationClient.registerLocationListener(myListener);
		mGeofenceClient = new GeofenceClient(this);

		super.onCreate();
		Log.d(TAG, "... Application onCreate... pid=" + Process.myPid());
	}
	
	public static MyApplication getInstance()
	{
		return mInstance;
	}

	/**
	 * 停止定位
	 */
	public void stopLocationClient()
	{
		if (mLocationClient != null && mLocationClient.isStarted())
		{
			mLocationClient.stop();
		} 
	}

	/**
	 * 发起定位
	 */
	public void requestLocationInfo()
	{
		setLocationOption();
		
		if (mLocationClient != null && !mLocationClient.isStarted())
		{
			mLocationClient.start();
		}

		if (mLocationClient != null && mLocationClient.isStarted())
		{
			mLocationClient.requestLocation();
		} 
	}

	/**
	 *  设置相关参数
	 */
	private void setLocationOption()
	{
		LocationClientOption option = new LocationClientOption();
		option.setOpenGps(true); // 打开gps
		option.setCoorType("bd09ll"); // 设置坐标类型
		option.setServiceName("com.baidu.location.service_v2.9");
		option.setPoiExtraInfo(true);
		option.setAddrType("all");
		option.setPoiNumber(10);
		option.disableCache(true);
		mLocationClient.setLocOption(option);
	}

	/**
	 * 监听函数,有更新位置的时候,格式化成字符串,输出到屏幕中
	 */
	public class MyLocationListenner implements BDLocationListener
	{
		@Override
		public void onReceiveLocation(BDLocation location)
		{
			if (location == null)
			{
				sendBroadCast("定位失败!");
				return;
			}
			sendBroadCast(location.getAddrStr());
		}

		public void onReceivePoi(BDLocation poiLocation)
		{
			if (poiLocation == null)
			{
				sendBroadCast("定位失败!");
				return;
			}
			sendBroadCast(poiLocation.getAddrStr());
		}
		
	}
	
	/**
	 * 得到发送广播
	 * @param address
	 */
	public void sendBroadCast(String address)
	{
		stopLocationClient();
		
		Intent intent = new Intent(MainActivity.LOCATION_BCR);
		intent.putExtra("address", address);
		sendBroadcast(intent);
	}
}


MainActivity.class:
package com.liucanwen.baidulocation;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity
{
	private BroadcastReceiver broadcastReceiver;
	public static String LOCATION_BCR = "location_bcr";
	
	private Button locBtn;
	private TextView locInfo;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		initialize();
		
		initializeViews();
		
		initializeListeners();
	}

	private void initialize()
	{
		registerBroadCastReceiver();
	}
	
	private void initializeViews()
	{
		locBtn = (Button) findViewById(R.id.location);
		locInfo = (TextView) findViewById(R.id.location_info);
	}
	
	private void initializeListeners()
	{
		locBtn.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				locInfo.setText("定位中...");
				
				MyApplication.getInstance().requestLocationInfo();
			}
		});
	}

	/**
	 * 注册一个广播,监听定位结果
	 */
	private void registerBroadCastReceiver()
	{
		broadcastReceiver = new BroadcastReceiver()
		{
			@Override
			public void onReceive(Context context, Intent intent)
			{
				String address = intent.getStringExtra("address");
				
				locInfo.setText(address);
			}
		};
		IntentFilter intentToReceiveFilter = new IntentFilter();
		intentToReceiveFilter.addAction(LOCATION_BCR);
		registerReceiver(broadcastReceiver, intentToReceiveFilter);
	}
	
	@Override
	protected void onDestroy()
	{
		super.onDestroy();
		unregisterReceiver(broadcastReceiver);
	}

}


源代码下载:
http://download.csdn.net/detail/qq15989177612/6930569
  • 大小: 37.8 KB
2
0
分享到:
评论
2 楼 大头K 2014-07-07  
hksfho 写道
你好,怎樣顯不坐標?

你说的是在地图上显示坐标吗?
1 楼 hksfho 2014-07-04  
你好,怎樣顯不坐標?

相关推荐

    基于百度地图SDK实现的基础定位功能小demo.zip

    基于百度地图实现的基础定位功能的Android Studio项目,能获取到经纬度,以及具体的省份和城市,街道,也能判断是以什么样的方式,能将自己的位置显示在地图上。当然前提是将项目在真机上跑,在虚拟机上跑是没有效果...

    安卓课程设计基于Java开发的一款天气app源码(使用风天气api+百度地图定位sdk).tar

    安卓课程设计基于Java开发的一款天气app源码(使用风天气api+百度地图定位sdk).tar安卓课程设计基于Java开发的一款天气app源码(使用风天气api+百度地图定位sdk).tar安卓课程设计基于Java开发的一款天气app源码(使用风...

    基于百度地图的窝粑粑找厕所.zip

    本项目是一个基于安卓的找厕所的项目源码窝粑粑,主要是借助百度地图api寻找快速定位附近指定距离的厕所,当然还有关于厕所前世今生、各种马桶、还有不同品牌手纸的科普。项目里面的百度key已经失效了。想看具体效果...

    Android应用源码基于百度地图的窝粑粑找厕所.rar

    Android应用源码基于百度地图的窝粑粑找厕所是一个基于安卓的找厕所的项目源码窝粑粑,主要是借助百度地图api寻找快速定位附近指定距离的厕所,当然还有关于厕所前世今生、各种马桶、还有不同品牌手纸的科普。项目...

    高仿版百度地图基于iOS SDK v2.5.0,功能完善!

    C写的完整的IOS程序,跟我原来上手安卓的时候一样,也是写的高仿版百度地图,[url=http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=2641&fromuid=19954]【福利来了】基于百度地图SDKv2.1.3开发的高仿版...

    Android应用源码基于百度地图的窝粑粑找厕所

    Android应用源码基于百度地图的窝粑粑找厕所是一个基于安卓的找厕所的项目源码窝粑粑,主要是借助百度地图api寻找快速定位附近指定距离的厕所,当然还有关于厕所前世今生、各种马桶、还有不同品牌手纸的科普。项目...

    百度地图开发java源码-foodie-app:美食应用

    百度地图开发java源码 Android美食APP项目开源(包括后台) 项目简介 小食光定位为一款集美食,社交,LBS服务于一体的美食推荐APP。为你发现周边美食的同时提供一个吃货分享的平台。 APP截图 下载地址 功能模块 美食...

    百度地图开发java源码-uiautomatorviewer-UI-:二次开发uiautomatorviewer优化定位符生成,支持生成Jav

    百度地图开发java源码 Lvmama Ui Automator Viewer使用帮助(兼容支持IOS,安卓) 项目介绍 二次开发 uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码,修复自带工具画面有动态加载时截图失败...

    javaweb物流配货项目源码2.zip

    5. 地图定位:使用百度地图API实现货物配送车辆的实时定位和跟踪。可以查看车辆行驶路线和预计到达时间。 6. 报表统计:实现对仓库和货物的各类报表统计和查询。比如货物进出库报表、仓库容量报表以及货物配送统计等。...

    基于百度地图的窝粑粑找厕所

    本项目是一个基于安卓的找厕所的项目源码窝粑粑,主要是借助百度地图api寻找快速定位附近指定距离的厕所,当然还有关于厕所前世今生、各种马桶、还有不同品牌手纸的科普。项目里面的百度key已经失效了。想看具体效果...

    基于微信小程序表白墙平台app设计PHP后端+源代码+文档说明+数据库.zip

    1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合...

    基于微信小程序失物招领平台app设计php后端+源代码+文档说明+数据库.zip

    1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合...

    百度地图开发java源码-ExceptionSearch:纯前后端分离的搜索引擎项目实战

    百度地图开发java源码 ExceptionSearch 纯前后端分离的搜索引擎项目实战 纯前后端分离项目的搜索引擎实战 前言: 本项目是与2019.12.12初步完成,基于java configuration的ssm后台,纯前后端分离项目,并内嵌tomcat...

    百度地图开发java源码-web-design:基于人脸识别的智慧医疗预约挂号平台

    百度地图开发java源码 2019年(第12届)中国大学生计算机设计大赛 基于人脸识别的智慧医疗预约挂号平台 项目背景 随着互联网大潮的推进,互联网技术逐渐进入医疗领域,各大医院也在积极进行互联网相关的改造,切实解决...

    【大数据】城市公交网络分析与可视化(一):基于Python爬取公交车行驶路径等基本信息

    (密钥Key是url中的一个关键参数,具体获取细节见后文补充部分,但我把自己申请的密钥直接放到代码中了,所以不申请问题也行) 2、啥是API? API(Application Programming Interface,应用程序接口) 有兴趣

    基于微信小程序的邀请函

    活动现场导航功能:根据用户填写举办庆典地点通过百度地图进行定位查询。) 2、照片集轮播展示 (自行上传照片。选择上传的某照片作为首页展示邀请信息) 3、发布祝福功能:用户特通过祝福模块发布祝福语,系统会...

    android上百例精品实例源码(非常值得下载)收藏

    百度地图API 之 定位周边搜索POI.zip 百度手机地图 实例集合.rar 获取Gps信息的程序源码.rar 进度条对话框Demo.zip 通话记录源码.rar 飞行射击类游戏源码.rar 这个是传送门,如果觉得资源好可以去这里下载...

    ios-MobileProject.zip

    9 增加百度地图显示页面功能实例,实现在地图上显示几个坐标点,并自定义坐标点的图标跟弹出提示窗内容,实现当前定位并画出行车路线图; 10 增加FLEX,在本地测试版本开启,FLEX是Flipboard官方发布的一组专门...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...

    基于微信小程序表白墙平台app+sql数据库(毕业设计).zip

    该项目代码主要针对计算机、自动化等相关专业的学生从业者下载使用,项目代码都经过严格调试,确保可以运行!放心下载使用。 也可作为期末课程设计、课程大作业、毕业设计等。具有较高的学习借鉴价值!也可直接当做...

Global site tag (gtag.js) - Google Analytics