`

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

阅读更多
这段时间经常接触百度地图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  
你好,怎樣顯不坐標?

相关推荐

    基于百度地图实现的定位功能.zip项目安卓应用源码下载

    这个"基于百度地图实现的定位功能.zip"包含了完整的源代码,为开发者提供了宝贵的参考资源,无论你是学生进行毕业设计,还是个人或公司进行项目开发,都能从中受益。 首先,我们需要了解Android平台上的百度地图SDK...

    基于百度地图实现的定位功能.7z

    本文将深入探讨如何基于百度地图API实现定位功能,为用户提供精确的地理位置信息。 首先,百度地图API(Application Programming Interface)是百度提供的一套用于开发地图应用的接口工具,它允许开发者在自己的...

    基于百度地图实现的定位功能.zip安卓程序项目源码资源下载

    该资源是一个基于百度地图API开发的安卓应用程序项目源码,主要功能是实现定位服务。这个项目源码可以作为学生进行毕业设计的参考,也可以供程序员学习研究,甚至可用于小型公司快速构建新的定位功能项目。 首先,...

    Android应用源码之基于百度地图实现的定位功能.zip

    本项目聚焦于如何在Android应用中实现基于百度地图的定位功能,这涉及到多个技术点,包括百度地图API的使用、Android权限管理、定位服务的开启与监听,以及地图界面的展示与操作。 首先,要实现百度地图的定位功能...

    安卓Android源码——基于百度地图实现的定位功能.rar

    这个压缩包“安卓Android源码——基于百度地图实现的定位功能.rar”提供了一个实例,展示了如何利用百度地图API在Android应用中实现精准的定位功能。下面将详细解释其中涉及的关键知识点。 首先,我们需要了解的是...

    安卓Andriod源码——基于百度地图实现的定位功能.zip

    这个压缩包文件“安卓Andriod源码——基于百度地图实现的定位功能.zip”显然包含了实现这一功能的源代码示例。让我们深入探讨一下如何在Android中集成百度地图API并实现定位功能。 首先,我们需要在项目中引入百度...

    Android高级应用源码-基于百度地图实现的定位功能.zip

    本示例项目"Android高级应用源码-基于百度地图实现的定位功能.zip"提供了一个详细的学习资源,帮助开发者深入理解如何集成百度地图API来实现在Android应用中的定位服务。以下是这个项目所涉及的主要知识点: 1. **...

    小程序源码 基于百度地图实现的定位功能.rar

    在本压缩包中,我们拥有一个小程序的源码,该源码主要实现了基于百度地图的定位功能。小程序是一种轻量级的应用程序,通常用于移动设备,无需下载安装即可使用,为用户提供便捷的服务。这个特定的小程序利用了百度...

    安卓Android源码——基于百度地图实现的定位功能.zip

    这个压缩包文件“安卓Android源码——基于百度地图实现的定位功能.zip”很可能包含了一个完整的示例项目,展示了如何集成百度地图API并实现在移动设备上的定位。下面我们将深入探讨这个主题,讲解如何在Android应用...

    安卓开发-基于百度地图实现的定位功能.zip

    本教程将详细介绍如何在Android应用程序中利用百度地图API实现精准的定位功能。以下是对这个主题的详细解析。 首先,我们需要了解安卓系统对定位服务的支持。Android系统提供了一个叫做Location API的框架,它允许...

    android 百度定位、离线地图、测量、运动轨迹doem基于百度地图的部分功能

    在Android开发中,百度地图API提供了丰富的功能,包括定位、离线地图、测量以及运动轨迹绘制等。这些功能使得开发者可以构建出具有专业地理信息处理能力的应用。在使用百度地图API时,尤其对于Android 6.0及以上版本...

    基于VB的百度地图定位标注实例源码

    【标题】"基于VB的百度地图定位标注实例源码"是一个使用Visual Basic 6.0(VB6.0)开发的程序,它整合了百度地图API,能够在VB的窗体界面中显示实时的在线地图。这个实例的核心功能是允许用户在文本框中输入经纬度...

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

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

    使用百度地图实现简单定位

    我们将重点讨论如何在项目中配置百度地图框架,并实现基本的用户定位功能。 首先,为了在项目中使用百度地图,你需要在百度地图开放平台(http://lbsyun.baidu.com/)注册一个开发者账号,创建一个新的应用并获取到...

    可定位显示轨迹地图(基于百度地图)源代码

    这个项目"可定位显示轨迹地图(基于百度地图)源代码"提供了一个实例,帮助开发者理解如何利用百度地图SDK来实现实时定位和轨迹绘制。 首先,我们要了解百度地图SDK。百度地图SDK为开发者提供了丰富的API接口,涵盖...

    android 百度地图sdk 定位功能

    提供的压缩包`BaiduLoc_AndroidSDK_v7.6_Demo`应该是百度地图SDK的一个示例项目,包含了实现上述功能的代码示例,可以帮助开发者快速理解和集成定位功能。 通过以上步骤和代码示例,开发者可以有效地在Android应用...

    基于百度地图api开发的安卓定位软件,秒定位精准

    在安卓平台上,开发一款基于百度地图API的定位软件可以实现高效、精准的地理位置服务。这款“秒定位精准”软件利用了百度地图强大的地理信息系统,为用户提供实时、准确的定位功能,尤其适合对安卓开发初学者进行...

    基于Android的百度地图的导航定位系统

    总结,基于Android的百度地图导航定位系统结合了移动设备的便携性和百度地图的强大功能,为用户提供了一种实用的定位导航解决方案。通过深入研究其内部机制,开发者不仅可以提升自己的Android开发技能,还能对地图...

    基于百度地图sdk的定位和地图显示项目源码

    本项目源码"基于百度地图sdk的定位和地图显示项目源码"是一个典型的实例,它展示了如何在Android Studio环境中集成并运用百度地图服务。下面将详细解析这个项目的相关知识点。 首先,我们需要在项目中集成百度地图...

Global site tag (gtag.js) - Google Analytics