用百度API实现热(WIFI)、GPS、基站定位

直接在代码。。

。嘎嘎

/**
 * 百度基站定位错误返回码
 */
// 61 : GPS所在地结果
// 62 : 扫描整合的基础上有针对性的失败。在这一点上的定位结果无效。
// 63 : 网络异常,没有成功向server发起请求。此时定位结果无效。

// 65 : 定位缓存的结果。
// 66 : 离线定位结果。通过requestOfflineLocaiton调用时相应的返回结果
// 67 : 离线定位失败。通过requestOfflineLocaiton调用时相应的返回结果
// 68 : 网络连接失败时。查找本地离线定位时相应的返回结果
// 161: 表示网络定位结果
// 162~167: 服务端定位失败
// 502:KEY參数错误
// 505:KEY不存在或者非法
// 601:KEY服务被开发人员自己禁用
// 602: KEY Mcode不匹配,意思就是您的ak配置过程中安全码设置有问题。请确保: sha1正确,“;”分号是英文状态。且包名是您当前执行应用的包名
// 501-700:KEY验证失败

public class BaiduActivity extends Activity implements OnClickListener {

	private static final String TAG = "BaiduActivity";
	private TextView mText;
	private TextView mTextPoi;
	private LocationClient mLocationClient = null;
	private BDLocationListener myListener = new MyLocationListener();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_weather);
		mLocationClient = new LocationClient(getApplicationContext()); // 声明LocationClient类
		// mLocationClient.setAccessKey("8mrnaFzKu3DoduLnWuB5Lt2w"); //V4.1
		// mLocationClient.setAK("8mrnaFzKu3DoduLnWuB5Lt2w"); //V4.0
		mLocationClient.registerLocationListener(myListener); // 注冊监听函数
		setLocationOption();
		mLocationClient.start();// 開始定位
		initWidgets();
	}

	private void initWidgets() {
		mText = (TextView) findViewById(R.id.tv_text);
		mTextPoi = (TextView) findViewById(R.id.tv_text_poi);
		Button btn = (Button) findViewById(R.id.btn_request);
		btn.setOnClickListener(this);
		btn = (Button) findViewById(R.id.btn_request_poi);
		btn.setOnClickListener(this);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		mLocationClient.stop();// 停止定位
	}

	/**
	 * 设置相关參数
	 */
	private void setLocationOption() {
		LocationClientOption option = new LocationClientOption();
		option.setOpenGps(true);
		option.setIsNeedAddress(true);// 返回的定位结果包括地址信息
		option.setAddrType("all");// 返回的定位结果包括地址信息
		option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02
		option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000ms
		option.disableCache(true);// 禁止启用缓存定位
		option.setPoiNumber(5); // 最多返回POI个数
		option.setPoiDistance(1000); // poi查询距离
		option.setPoiExtraInfo(true); // 是否须要POI的电话和地址等具体信息
		option.setPriority(LocationClientOption.NetWorkFirst); // 优先网络定位
		// option.setLocationMode(LocationMode.Battery_Saving);//设置定位模式
		mLocationClient.setLocOption(option);
	}

	public class MyLocationListener implements BDLocationListener {
		@Override
		public void onReceiveLocation(BDLocation location) {
			if (location == null)
				return;
			StringBuffer sb = new StringBuffer(256);
			sb.append("当前时间 : ");
			sb.append(location.getTime());
			sb.append("\n错误码 : ");
			sb.append(location.getLocType());
			sb.append("\n纬度 : ");
			sb.append(location.getLatitude());
			sb.append("\n经度 : ");
			sb.append(location.getLongitude());
			sb.append("\n半径 : ");
			sb.append(location.getRadius());
			if (location.getLocType() == BDLocation.TypeGpsLocation) {
				sb.append("\n速度 : ");
				sb.append(location.getSpeed());
				sb.append("\n卫星数 : ");
				sb.append(location.getSatelliteNumber());
			} else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {
				sb.append("\n地址 : ");
				sb.append(location.getAddrStr());
			}
			mText.setText(sb.toString());
			Log.d(TAG, "onReceiveLocation " + sb.toString());
		}

		public void onReceivePoi(BDLocation poiLocation) {
			// 将在下个版本号中去除poi功能
			if (poiLocation == null) {
				return;
			}
			StringBuffer sb = new StringBuffer(256);
			sb.append("Poi time : ");
			sb.append(poiLocation.getTime());
			sb.append("\nerror code : ");
			sb.append(poiLocation.getLocType());
			sb.append("\nlatitude : ");
			sb.append(poiLocation.getLatitude());
			sb.append("\nlontitude : ");
			sb.append(poiLocation.getLongitude());
			sb.append("\nradius : ");
			sb.append(poiLocation.getRadius());
			if (poiLocation.getLocType() == BDLocation.TypeNetWorkLocation) {
				sb.append("\naddr : ");
				sb.append(poiLocation.getAddrStr());
			}
			if (poiLocation.hasPoi()) {
				sb.append("\nPoi:");
				sb.append(poiLocation.getPoi());
			} else {
				sb.append("noPoi information");
			}
			mTextPoi.setText(sb.toString());
			Log.d(TAG, "onReceivePoi " + sb.toString());
		}
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.btn_request:
			if (mLocationClient != null && mLocationClient.isStarted())
				mLocationClient.requestLocation();
			else
				Log.d(TAG, "locClient is null or not started");
			break;
		case R.id.btn_request_poi:
			// 请求POI数据
			if (mLocationClient != null && mLocationClient.isStarted())
				mLocationClient.requestPoi();
			break;
		default:
			break;
		}
	}
}

代码下载:BaiduLocation

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-10 03:59:52

用百度API实现热(WIFI)、GPS、基站定位的相关文章

百度地图总结第三篇之定位(我的位置)

前言: 使用百度定位SDK获取对应的位置信息,然后利用地图SDK中的接口.您能够在地 在这里提示一下,假设是在一个project中同一时候使用定位的SDK和百度地图SDK.能够共同使用一个key.假设新创建project,那么就要去又一次申请key了.申请方式一样.如有疑问能够看看百度地图总结第一篇–环境集成和Hello Baidu_Map实现 集成定位SDK: 然后我们看下集成文档,下载对应的定位SDK,解压出来,我们把须要的jar包加入到libs文件夹下(BaiduLBS_Android.j

使用百度API实现热点(WIFI)、GPS、基站定位

直接上代码...嘎嘎 /** * 百度基站定位错误返回码 */ // 61 : GPS定位结果 // 62 : 扫描整合定位依据失败.此时定位结果无效. // 63 : 网络异常,没有成功向服务器发起请求.此时定位结果无效. // 65 : 定位缓存的结果. // 66 : 离线定位结果.通过requestOfflineLocaiton调用时对应的返回结果 // 67 : 离线定位失败.通过requestOfflineLocaiton调用时对应的返回结果 // 68 : 网络连接失败时,查找本地

Android附近基站+Wifi+IP+GPS多渠道定位方案

前言: 在移动客户端的开发中,地理位置定位是一个非常重要的环节,有些时候用户可能会限制web app或者Android app的一些权限,或者由于信号不佳的原因无法获得准确的GPS位置,甚至为了省电,用户可能对开启GPS开关可能会有抵触情绪.但是不能因为GPS的种种限制就放弃了对用户位置的追踪.要通过一切能发送出信号的物体尽可能准确的获取到用户的位置,有时可以牺牲一些精度,对于大数据和用户地区分布分析来说,有一个大体的位置已经够分析人员使用,而且绕开GPS的重重壁垒,为数据的完整性提供可靠方案

Gps定位和wifi定位和基站定位的比较

现在手机定位的方式是:Gps定位,wifi定位,基站定位 Gps定位的前提,手机开启Gps定位模块,在室外,定位的精度一般是几米的范围 wifi定位的前提,手机要开启wifi,连不连上wifi热点都可以,定位的精度一般是几十米的范围 基站定位的前提,手机必须插入sim卡并且有网络信号,定位的精度一般是几百米的范围 Gps定位原理 : 采用全球定位卫星 wifi定位的原理 :假如你的家里有个自己设立的无线路由器,经常开机,你的邻居正在阳台上用手机玩谷歌地图,恰好他手机的wifi是开着的,不过没有连

移动联通基站定位查询api

移动联通基站定位查询 移动联通基站定位有很多网站都作了接口api,我使用的是haoservice的接口.使用这个接口需要申请key值. (http://www.haoservice.com/docs/1) Haoservice提供的定位有基站定位,有手机号定位,还有wifi等定位,今天只介绍移动联通基站定位. ..移动联通基站定位 形式: http://api.haoservice.com/api/getlbs 例如: http://api.haoservice.com/api/getlbs?m

【转】百度API获取城市名地名(附源码)

在做一个软件时,用到了定位功能.网上有很多关于google 的GPS定位,但网上关于google定位都没有用, 搜索下原因:(这里建议大家在中国就尽量不使用系统自带的定位) 因为Google的服务器不在中国(就算能网上关于定位的代码能用,那也非常的慢,除非你的应用是在国外使用)    由于网络等原因所以定位一般会失败 于是转向使用百度api来定位. 所用到的百度API参考地址. 取得位置的百度官方sdk参考 Android定位SDK 由坐标获取地址方法参考 Geocoding API 的 7.逆

GPRS 基站定位 LAC CID 得到经度 纬度及百度地图显示

基站定位免费接口API: http://mpro.sinaapp.com/my/jzdw.php?hex=0&lac=10328&cid=26997&map=1 lac 和CID 由GPRS AT指令或获取 hex=1表示使用十六进制格式,hex=0表示使用十进制,设备返回的一般是十六进制 map=1百度地址直接定位显示 map=0 返回经度 纬度信息, 使用JSON格式 JSON格式返回:(lat lon ) {"result":1,"format&

关于百度api定位开发中出现的一些问题

mLocationClient = ((LocationApplication)getApplication()).mLocationClient; 1 这段代码一直出现问题,导致程序在runtime崩溃 问题出在((LocationApplication)getApplication()). LocationApplication是自定义的类, 且继承了Application. 这就需要在Mainfest.xml文件中的<application节点中, 增加(修改)name属性: <appl

百度API使用--javascript api进行多点定位

使用百度地图提供的javascript api,给定多点的经纬度坐标,在百度地图上 显示这些坐标点. 其中包括各个点自适应地图显示,自定义坐标点的图标,以及各个点之间添加折线. 实现的效果如下图: 具体步骤如下: 1.页面引用百度地图api脚本 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的密钥"></script> 其中ak为你