http://blog.csdn.net/android_ls/article/details/8583437

在上一篇的基础上(Android百度地图之定位SDK(v3.1)使用示例(一))浅谈在室外使用百度地图定位服务。

一、在户外使用GPS定位,修改LocationClient对象的属性即可,我在下班的路上测了下,定位结果比较准确。

1、修改LocationClientOption对象的属性,也就是修改了LocationClient对象的mLocationClient.setLocOption(option);属性。

LocationClientOptionoption=newLocationClientOption();//需要地址信息,设置为其他任何值(string类型,且不能为null)时,都表示无地址信息。option.setAddrType("all");//设置是否返回POI的电话和地址等详细信息。默认值为false,即不返回POI的电话和地址信息。option.setPoiExtraInfo(true);//设置产品线名称。强烈建议您使用自定义的产品线名称,方便我们以后为您提供更高效准确的定位服务。option.setProdName("通过GPS定位我当前的位置");//打开GPS,使用gps前提是用户硬件打开gps。默认是不打开gps的。option.setOpenGps(true);//定位的时间间隔,单位:ms//当所设的整数值大于等于1000(ms)时,定位SDK内部使用定时定位模式。//option.setScanSpan(1000);//查询范围,默认值为500,即以当前定位位置为中心的半径大小。option.setPoiDistance(500);//禁用启用缓存定位数据option.disableCache(true);//坐标系类型,百度手机地图对外接口中的坐标系默认是bd09lloption.setCoorType("bd09ll");//设置最多可返回的POI个数,默认值为3。由于POI查询比较耗费流量,设置最多返回的POI个数,以便节省流量。option.setPoiNumber(3);//设置定位方式的优先级。//当gps可用,而且获取了定位结果时,不再发起网络请求,直接返回给用户坐标。这个选项适合希望得到准确坐标位置的用户。如果gps不可用,再发起网络请求,进行定位。option.setPriority(LocationClientOption.GpsFirst);2、与上一篇里的属性设置差别:

//设置产品线名称。强烈建议您使用自定义的产品线名称,方便我们以后为您提供更高效准确的定位服务。option.setProdName("通过GPS定位我当前的位置");//打开GPS,使用gps前提是用户硬件打开gps。默认是不打开gps的。option.setOpenGps(true);//设置定位方式的优先级。//当gps可用,而且获取了定位结果时,不再发起网络请求,直接返回给用户坐标。这个选项适合希望得到准确坐标位置的用户。如果gps不可用,再发起网络请求,进行定位。option.setPriority(LocationClientOption.GpsFirst);

二、设置定位时间间隔:

百度API里的说明:

1、当所设的整数值大于等于1000(ms)时,定位SDK内部使用定时定位模式。调用requestLocation()后,每隔设定的时间,定位SDK就会进行一次定位。如果定位SDK根据定位依据发现位置没有发生变化,就不会发起网络请求,返回上一次定位的结果;如果发现位置改变,就进行网络请求进行定位,得到新的定位结果。定时定位时,调用一次requestLocation,会定时监听到定位结果。

2、当不设此项,或者所设的整数值小于1000(ms)时,采用一次定位模式。每调用一次requestLocation(),定位SDK会发起一次定位。请求定位与监听结果一一对应。

3、设定了定时定位后,可以热切换成一次定位,需要重新设置时间间隔小于1000(ms)即可。locationClient对象stop后,将不再进行定位。如果设定了定时定位模式后,多次调用requestLocation(),则是每隔一段时间进行一次定位,同时额外的定位请求也会进行定位,但频率不会超过1秒一次。

我实际调用了下,LocationClientOption对象其它属性设置不变。当所设的整数值大于等于1000(ms)时,会每隔设定的时间就重新定位一次。

//定位的时间间隔,单位:ms//当所设的整数值大于等于1000(ms)时,定位SDK内部使用定时定位模式。option.setScanSpan(1000);三、完整代码:

packagecom.android.baidu.map;importandroid.app.Activity;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.widget.TextView;importcom.baidu.location.BDLocation;importcom.baidu.location.BDLocationListener;importcom.baidu.location.LocationClient;importcom.baidu.location.LocationClientOption;/***通过GPS定位获取值*@authorandroid_ls**/publicclassBaiduMapLoaction2ActivityextendsActivity{privatestaticfinalStringTAG="BaiduMapLoactionActivity";privateLocationClientmLocationClient;privateMyBDLocationListenermBDLocationListener;privateTextViewmContent;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mLocationClient=newLocationClient(this.getApplicationContext());mBDLocationListener=newMyBDLocationListener();mLocationClient.registerLocationListener(mBDLocationListener);LocationClientOptionoption=newLocationClientOption();//需要地址信息,设置为其他任何值(string类型,且不能为null)时,都表示无地址信息。option.setAddrType("all");//设置是否返回POI的电话和地址等详细信息。默认值为false,即不返回POI的电话和地址信息。option.setPoiExtraInfo(true);//设置产品线名称。强烈建议您使用自定义的产品线名称,方便我们以后为您提供更高效准确的定位服务。option.setProdName("通过GPS定位我当前的位置");//打开GPS,使用gps前提是用户硬件打开gps。默认是不打开gps的。option.setOpenGps(true);//定位的时间间隔,单位:ms//当所设的整数值大于等于1000(ms)时,定位SDK内部使用定时定位模式。//option.setScanSpan(1000);//查询范围,默认值为500,即以当前定位位置为中心的半径大小。option.setPoiDistance(500);//禁用启用缓存定位数据option.disableCache(true);//坐标系类型,百度手机地图对外接口中的坐标系默认是bd09lloption.setCoorType("bd09ll");//设置最多可返回的POI个数,默认值为3。由于POI查询比较耗费流量,设置最多返回的POI个数,以便节省流量。option.setPoiNumber(3);//设置定位方式的优先级。//当gps可用,而且获取了定位结果时,不再发起网络请求,直接返回给用户坐标。这个选项适合希望得到准确坐标位置的用户。如果gps不可用,再发起网络请求,进行定位。option.setPriority(LocationClientOption.GpsFirst);mLocationClient.setLocOption(option);mContent=(TextView)this.findViewById(R.id.tv_content);//发起定位请求findViewById(R.id.btn_request).setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){mLocationClient.start();}});//重新定位findViewById(R.id.btn_location).setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){if(mLocationClient!=null&&mLocationClient.isStarted())mLocationClient.requestLocation();}});//发起查询请求findViewById(R.id.btn_address).setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){if(mLocationClient!=null&&mLocationClient.isStarted())mLocationClient.requestPoi();}});}finalclassMyBDLocationListenerimplementsBDLocationListener{@OverridepublicvoidonReceiveLocation(BDLocationlocation){Log.e(TAG,"---------onReceiveLocation()---------");if(location==null){Log.e(TAG,"---------onReceiveLocation------locationisNULL----");return;}inttype=location.getLocType();Log.i(TAG,"当前定位采用的类型是:type="+type);StringcoorType=location.getCoorType();Log.i(TAG,"坐标系类型:coorType="+coorType);//判断是否有定位精度半径if(location.hasRadius()){//获取定位精度半径,单位是米floataccuracy=location.getRadius();Log.i(TAG,"accuracy="+accuracy);}if(location.hasAddr()){//获取反地理编码。只有使用网络定位的情况下,才能获取当前位置的反地理编码描述。Stringaddress=location.getAddrStr();Log.i(TAG,"address="+address);}Stringprovince=location.getProvince();//获取省份信息Stringcity=location.getCity();//获取城市信息Stringdistrict=location.getDistrict();//获取区县信息Log.i(TAG,"province="+province);Log.i(TAG,"city="+city);Log.i(TAG,"district="+district);doublelatitude=location.getLatitude();doublelongitude=location.getLongitude();Log.i(TAG,"latitude="+latitude);Log.i(TAG,"longitude="+longitude);StringBuffersb=newStringBuffer(256);sb.append("time:");sb.append(location.getTime());sb.append("\nerrorcode:");sb.append(location.getLocType());sb.append("\nlatitude:");sb.append(location.getLatitude());sb.append("\nlontitude:");sb.append(location.getLongitude());sb.append("\nradius:");sb.append(location.getRadius());if(location.getLocType()==BDLocation.TypeGpsLocation){sb.append("\nspeed:");sb.append(location.getSpeed());sb.append("\nsatellite:");sb.append(location.getSatelliteNumber());}elseif(location.getLocType()==BDLocation.TypeNetWorkLocation){sb.append("\naddr:");sb.append(location.getAddrStr());}mContent.setText(sb);}@OverridepublicvoidonReceivePoi(BDLocationpoiLocation){Log.e(TAG,"---------onReceivePoi()---------");if(poiLocation==null){Log.e(TAG,"---------onReceivePoi------locationisNULL----");return;}if(poiLocation.hasPoi()){StringpoiStr=poiLocation.getPoi();Log.i(TAG,"poiStr="+poiStr);}if(poiLocation.hasAddr()){//获取反地理编码。只有使用网络定位的情况下,才能获取当前位置的反地理编码描述。Stringaddress=poiLocation.getAddrStr();Log.i(TAG,"address="+address);}StringBuffersb=newStringBuffer(256);sb.append("Poitime:");sb.append(poiLocation.getTime());sb.append("\nerrorcode:");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("noPoiinformation");}mContent.setText(sb);}}@OverrideprotectedvoidonDestroy(){if(mLocationClient!=null&&mLocationClient.isStarted()){if(mBDLocationListener!=null){mLocationClient.unRegisterLocationListener(mBDLocationListener);}mLocationClient.stop();mLocationClient=null;}super.onDestroy();}}

原文来自:雨枫技术教程网http://www.fengfly.com
原文网址:http://www.fengfly.com/plus/view-212238-2.html

原文来自:雨枫技术教程网http://www.fengfly.com
原文网址:http://www.fengfly.com/plus/view-212238-1.html

转载于:https://blog.51cto.com/lyp634959848/1325344

百度新key申请步骤相关推荐

  1. 如何申请百度API Key

    自从水经注万能地图下载器推出了下载POI功能之后,越来越多的朋友使用万能地图下载器下载百度POI数据.由于百度那边对访问次数的限制,尽管已经是企业级的账号,每天请求访问的次数有30万次,但是由于使用客 ...

  2. 百度定位SDK 申请密钥步骤

    原文地址:http://developer.baidu.com/map/wiki/index.php?title=android-locsdk/guide/key#.E7.99.BB.E5.BD.95 ...

  3. 微信公众号使用:新的微信公众号(企业版)的申请步骤

    新创建的公司宣传最重要,首先要做的就是要申请一个公司自己的微信公众平台,这样不仅可以圈粉,还是公司的门户之一,方便大众更好的了解,对公司的发展也是只有好处没有坏处的. 而且,微信公众号是利用微信公众账 ...

  4. 在 github 上添加 SSH key 的步骤

    版权声明:个人学习笔记,不喜勿喷,文章转载请标明出处,谢谢! <a class="copy-right-url" href=" https://blog.csdn. ...

  5. 百度地图-----密钥申请

    百度地图-–密钥申请 ONE Goal, ONE Passion ! 应用中集成地图时我们一般选择百度或高德地图.无论是什么集成只要是第3方集成都要求我们去申请什么appKey之类的东西.有的申请起来 ...

  6. 百度百科创建词条步骤是怎样的?

    互联网时代,在百度上搜索人物.企业.品牌.作品之类的信息都会出现相关百科词条,一般在首页前几名的位置,权重非常高,获得的用户流量也是非常庞大的. 基于百度百科的宣传背书,大大提高了内容的可信度和知名度 ...

  7. steam自建服务器游戏_全网独家资料丨“Steam网吧计划”申请步骤讲解

    自从steam官方出了一个"steam网吧计划"后,很多业主都很感兴趣,提了很多问题: 我现在就有一个steam账号,里面有许多游戏,怎么注册为Steam网吧,把游戏分享给顾客?申 ...

  8. [WEB地图] 2017高德地图API WEB开发(key申请,地图搭建)简约教程

    前端时间因为公司需要研究 了一下百度的教程 然后写个简约的笔记记录一下自己学习的收获,只为了满足自己暂时的写作热情 高德地图WEB开发(key申请.api)简约教程 1.首先我们需要去"高德 ...

  9. hbuilder打包ios_ios开发证书的作用及申请步骤

    iOS开发证书 顾名思义就是在iOS应用开发过程中使用的. 在开发过程中打包安装到真机测试调试,解决开发过程的bug! 下面介绍申请步骤. 一.下载安装iOS证书申请辅助软件Appuploader A ...

最新文章

  1. 使用Python中的卷积神经网络进行恶意软件检测
  2. 每日一皮:前程序员离职后没人想接的代码...
  3. leetcode 371. Sum of Two Integers | 371. 两整数之和(补码运算)
  4. 林洋能源:布局能源互联网 分布式光伏龙头再扬帆
  5. 以太坊EVM在安全性方面的考虑
  6. 实现TeX的算法:回首编程技术的过去三十年
  7. 发条js调试工具_【转载】移动端js调试工具:eruda
  8. Excel—身份证生日提取
  9. 实时查询(otoci)
  10. 数据中台落地问题与建议-数字化架构设计(2)
  11. 作为架构师,你必需要搞清楚的概念:POJO、PO、DTO、DAO、BO、VO
  12. 第七十三集 KVM虚拟化☜(゚ヮ゚☜)
  13. 3705-26-8,cyclo(Phe-Pro),CYCLO-L-PHENYLALANYL-L-PROLINE,Einecs 223-047-0
  14. 排兵布阵 (分组背包)
  15. 计算1+3+5+...+99 的和
  16. java+mysql基于ssm的校园快递代领系统
  17. 【Pr剪辑】Pr下载链接,基础操作,渲染1080视频,视频导出,音频导出,视频变速和合并
  18. FAQ(70):java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher异常
  19. 【数方大数据】什么是三网运营商大数据精准获客?
  20. 低代码可视化开发理念在物联网APP开发中的应用

热门文章

  1. 点击列表高亮_HTML5 标签列表
  2. java string string_深入理解Java:String
  3. python 类 实例id递增_Python Django 模板类中 系统默认的主键ID自增,不会随着模板实例的删除而重置问题...
  4. node 跨域请求设置
  5. vue中使用checkbox
  6. 《漫画算法2》源码整理-5 二维数组螺旋输出
  7. 《漫画算法2》源码整理-1 二分查找树 AVL树 红黑树
  8. 浅析Spring事务传播行为和隔离级别
  9. Maven的pom文件那些事
  10. MySQL——EXPLAIN和执行计划