现在百度改版后有点不习惯,没办法,只有自己又去看了一下,比以前的简单方便多,有时间我会把导航等给做出来,当然了这个代码只是对于初学者来的,因为我自己也是初学者,你自己也可以在百度API上去看,试着写一遍,我这个主要的目的还是因为最近需要我才弄了一个定位的东西提出来,方便我自己以后又要去下载百度的东西
还需要这个包

private LocationService locationService;private TextView LocationResult;
//  private Button startLocation;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);// -----------demo view config ------------setContentView(R.layout.activity_main);LocationResult = (TextView) findViewById(R.id.textview1);LocationResult.setMovementMethod(ScrollingMovementMethod.getInstance());}/*** 显示请求字符串* * @param str*/public void logMsg(String str) {try {if (LocationResult != null)LocationResult.setText(str);} catch (Exception e) {e.printStackTrace();}}/**** Stop location service*/@Overrideprotected void onStop() {// TODO Auto-generated method stublocationService.unregisterListener(mListener); //注销掉监听locationService.stop(); //停止定位服务super.onStop();}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();// -----------location config ------------locationService = ((LocationApplication) getApplication()).locationService; //获取locationservice实例,建议应用中只初始化1个location实例,然后使用,可以参考其他示例的activity,都是通过此种方式获取locationservice实例的locationService.registerListener(mListener);//注册监听int type = getIntent().getIntExtra("from", 0);if (type == 0) {locationService.setLocationOption(locationService.getDefaultLocationClientOption());} else if (type == 1) {locationService.setLocationOption(locationService.getOption());}//      if (startLocation.getText().toString().equals(getString(R.string.startlocation))) {locationService.start();// 定位SDK// start之后会默认发起一次定位请求,开发者无须判断isstart并主动调用request
//          startLocation.setText(getString(R.string.stoplocation));
//      } else {locationService.stop();
//          startLocation.setText(getString(R.string.startlocation));
//      }
//      startLocation.setOnClickListener(new OnClickListener() {//
//          @Override
//          public void onClick(View v) {//              if (startLocation.getText().toString().equals(getString(R.string.startlocation))) {//                  locationService.start();// 定位SDK
//                                          // start之后会默认发起一次定位请求,开发者无须判断isstart并主动调用request
//                  startLocation.setText(getString(R.string.stoplocation));
//              } else {//                  locationService.stop();
//                  startLocation.setText(getString(R.string.startlocation));
//              }
//          }
//      });}/****** @see copy funtion to you project* 定位结果回调,重写onReceiveLocation方法,可以直接拷贝如下代码到自己工程中修改**/private BDLocationListener mListener = new BDLocationListener() {@Overridepublic void onReceiveLocation(BDLocation location) {// TODO Auto-generated method stubif (null != location && location.getLocType() != BDLocation.TypeServerError) {StringBuffer sb = new StringBuffer(256);
//              sb.append("time : ");/*** 时间也可以使用systemClock.elapsedRealtime()方法 获取的是自从开机以来,每次回调的时间;* location.getTime() 是指服务端出本次结果的时间,如果位置不发生变化,则时间不变*/
//              sb.append(location.getTime());
//              sb.append("\nlocType : ");// 定位类型
//              sb.append(location.getLocType());
//              sb.append("\nlocType description : ");// *****对应的定位类型说明*****
//                sb.append(location.getLocTypeDescription());
//              sb.append("\nlatitude : ");// 纬度
//              sb.append(location.getLatitude());
//              sb.append("\nlontitude : ");// 经度
//              sb.append(location.getLongitude());//              sb.append(location.getRadius());
//              sb.append("\nCountryCode : ");// 国家码
//              sb.append(location.getCountryCode());
//              sb.append("\nCountry : ");// 国家名称
//              sb.append(location.getCountry());
//              sb.append("\ncitycode : ");// 城市编码
//              sb.append(location.getCityCode());
//              sb.append("\ncity : ");// 城市sb.append(location.getCity());
//              sb.append("\nDistrict : ");// 区sb.append(location.getDistrict());
//              sb.append("\nStreet : ");// 街道sb.append(location.getStreet());
//              sb.append("\naddr : ");// 地址信息sb.append(location.getAddrStr());
//              sb.append("\nUserIndoorState: ");// *****返回用户室内外判断结果*****
//              sb.append(location.getUserIndoorState());
//              sb.append("\nDirection(not all devices have value): ");
//              sb.append(location.getDirection());// 方向
//              sb.append("\nlocationdescribe: ");
//                sb.append(location.getLocationDescribe());// 位置语义化信息
//              sb.append("\nPoi: ");// POI信息if (location.getPoiList() != null && !location.getPoiList().isEmpty()) {for (int i = 0; i < location.getPoiList().size(); i++) {Poi poi = (Poi) location.getPoiList().get(i);sb.append(poi.getName() + ";");}}if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果sb.append("\nspeed : ");sb.append(location.getSpeed());// 速度 单位:km/hsb.append("\nsatellite : ");sb.append(location.getSatelliteNumber());// 卫星数目sb.append("\nheight : ");sb.append(location.getAltitude());// 海拔高度 单位:米sb.append("\ngps status : ");sb.append(location.getGpsAccuracyStatus());// *****gps质量判断*****sb.append("\ndescribe : ");sb.append("gps定位成功");} else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果// 运营商信息if (location.hasAltitude()) {// *****如果有海拔高度*****sb.append("\nheight : ");sb.append(location.getAltitude());// 单位:米}
//                  sb.append("\noperationers : ");// 运营商信息
//                  sb.append(location.getOperators());
//                  sb.append("\ndescribe : ");
//                  sb.append("网络定位成功");} else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果sb.append("\ndescribe : ");sb.append("离线定位成功,离线定位结果也是有效的");} else if (location.getLocType() == BDLocation.TypeServerError) {sb.append("\ndescribe : ");sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因");} else if (location.getLocType() == BDLocation.TypeNetWorkException) {sb.append("\ndescribe : ");sb.append("网络不同导致定位失败,请检查网络是否通畅");} else if (location.getLocType() == BDLocation.TypeCriteriaException) {sb.append("\ndescribe : ");sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");}logMsg(sb.toString());}}};//service服务/.................华丽的分割线........................../
private LocationClient client = null;private LocationClientOption mOption,DIYoption;private Object  objLock = new Object();/**** * @param locationContext*/public LocationService(Context locationContext){synchronized (objLock) {if(client == null){client = new LocationClient(locationContext);client.setLocOption(getDefaultLocationClientOption());}}}/**** * @param listener* @return*/public boolean registerListener(BDLocationListener listener){boolean isSuccess = false;if(listener != null){client.registerLocationListener(listener);isSuccess = true;}return  isSuccess;}public void unregisterListener(BDLocationListener listener){if(listener != null){client.unRegisterLocationListener(listener);}}/**** * @param option* @return isSuccessSetOption*/public boolean setLocationOption(LocationClientOption option){boolean isSuccess = false;if(option != null){if(client.isStarted())client.stop();DIYoption = option;client.setLocOption(option);}return isSuccess;}public LocationClientOption getOption(){return DIYoption;}/**** * @return DefaultLocationClientOption*/public LocationClientOption getDefaultLocationClientOption(){if(mOption == null){mOption = new LocationClientOption();mOption.setLocationMode(LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备mOption.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;mOption.setScanSpan(3000);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的mOption.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要mOption.setIsNeedLocationDescribe(true);//可选,设置是否需要地址描述mOption.setNeedDeviceDirect(false);//可选,设置是否需要设备方向结果mOption.setLocationNotify(false);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果mOption.setIgnoreKillProcess(true);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死   mOption.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”mOption.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到mOption.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集mOption.setIsNeedAltitude(false);//可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用}return mOption;}public void start(){synchronized (objLock) {if(client != null && !client.isStarted()){client.start();}}}public void stop(){synchronized (objLock) {if(client != null && client.isStarted()){client.stop();}}}
//建立一个Util类放入一下代码
public final static String CoorType_GCJ02 = "gcj02";public final static String CoorType_BD09LL= "bd09ll";public final static String CoorType_BD09MC= "bd09";/****61 : GPS定位结果,GPS定位成功。*62 : 无法获取有效定位依据,定位失败,请检查运营商网络或者wifi网络是否正常开启,尝试重新请求定位。*63 : 网络异常,没有成功向服务器发起请求,请确认当前测试手机网络是否通畅,尝试重新请求定位。*65 : 定位缓存的结果。*66 : 离线定位结果。通过requestOfflineLocaiton调用时对应的返回结果。*67 : 离线定位失败。通过requestOfflineLocaiton调用时对应的返回结果。*68 : 网络连接失败时,查找本地离线定位时对应的返回结果。*161: 网络定位结果,网络定位定位成功。*162: 请求串密文解析失败。*167: 服务端定位失败,请您检查是否禁用获取位置信息权限,尝试重新请求定位。*502: key参数错误,请按照说明文档重新申请KEY。*505: key不存在或者非法,请按照说明文档重新申请KEY。*601: key服务被开发者自己禁用,请按照说明文档重新申请KEY。*602: key mcode不匹配,您的ak配置过程中安全码设置有问题,请确保:sha1正确,“;”分号是英文状态;且包名是您当前运行应用的包名,请按照说明文档重新申请KEY。*501~700:key验证失败,请按照说明文档重新申请KEY。*/public static float[] EARTH_WEIGHT = {0.1f,0.2f,0.4f,0.6f,0.8f}; // 推算计算权重_地球//public static float[] MOON_WEIGHT = {0.0167f,0.033f,0.067f,0.1f,0.133f}; //public static float[] MARS_WEIGHT = {0.034f,0.068f,0.152f,0.228f,0.304f}; //需要用到的权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" ></uses-permission><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" ></uses-permission><uses-permission android:name="android.permission.READ_PHONE_STATE" ></uses-permission><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ></uses-permission><uses-permission android:name="android.permission.READ_LOGS" ></uses-permission><uses-permission android:name="android.permission.VIBRATE" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.WRITE_SETTINGS" />//配置你的Application<applicationandroid:allowBackup="true"android:name="com.example.mathname.LocationApplication"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><serviceandroid:name="com.baidu.location.f"android:enabled="true"android:process=":remote" ><intent-filter><action android:name="com.baidu.location.service_v2.2" ></action></intent-filter></service><meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="你自己的KEY" />

2016基于百度地图定位相关推荐

  1. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

    原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  2. 基于百度地图实现Android定位功能实现(详解+教程)

    基于百度地图实现Android定位功能实现(详解+教程) 1.初始化 (一)获取到SHA1 (1)找到View中的Tool Windows并打开Terminal (2)找到你的jdk的bin目录,小编 ...

  3. 基于百度地图实现Android定位功能实现

    基于百度地图实现Android定位功能实现 初始化 一>获取SHA1 二>Android studio 配置 (1)下载百度地图sdk (2)解压安装包 (3)回到刚刚配置的jar包,右击 ...

  4. 基于Android的百度地图定位开发

    百度地图定位 一.注册和获取密钥 1.获取SHA1 2.获取包名 二.AS配置 三.显示地图开发 1.添加地图权限 2.添加地图容器 3.地图初始化 4.创建地图Activity,管理MapView生 ...

  5. Android 之一 Android Studio 安装、配置等新手入门 + 百度地图定位 + 移动摇杆 的实现

    缘起   之前在玩一款 VR 游戏:一起来捉妖.这款游戏是使用地图进行游戏的.无奈网上找了各种工具,要么付费,要么不好使.想想自己就是个程序猿,于是乎决定自己开发一个.现在游戏基本放弃了,但是为了游戏 ...

  6. unlegal android,百度地图定位 Cordova 插件 cordova-plugin-baidumaplocation

    软件介绍 百度地图定位Cordova插件,支持Android,IOS 可以在此地址查看example 基于百度地图Android版定位SDK(v7.1)以及百度地图IOS SDK (v3.2.1) 一 ...

  7. unlegal android,cordova-plugin-baidumaplocation百度地图定位Cordova插件

    百度地图定位Cordova插件,支持Android,IOS 可以在此地址查看example 基于百度地图Android版定位SDK(v7.1)以及百度地图IOS SDK (v3.2.1) 一,申请An ...

  8. 基于百度地图API在AI Studio上的卫星地图块图像处理与分类

    基于百度地图API在AI Stduio上的瓦片地图块图像处理与分类 项目介绍 本项目基于百度地图API获取了不同的瓦片地图并进行合并等处理,可用于遥感和抽象地图的地图块的图像分类.分割.检测等数据的制 ...

  9. android 百度地图定位总结

    百度地图用过几次,往往用过即忘,疏于总结,这次归纳一下 api-key, jar导入,Menifest.xml配置参考官方文档, 基于jar包 3.6.1版,地图sdk版本不同,方法会有差异 效果图: ...

最新文章

  1. python读写文件函数_Python读写文件
  2. 【腾讯三面】你能现场写一下LRU算法吗?
  3. 银行界加强计算机病毒管理,银行计算机管理系统维护现状与对策研究(7.12).doc...
  4. java学生签到系统视频教程_手把手教你做一个Java web学生信息、选课、签到考勤、成绩管理系统附带完整源码及视频开发教程...
  5. 如何在CentOS 7上使用HAproxy Loadbalancer设置Percona XtraDB集群(负载均衡)
  6. Vim自动补全神器YouCompleteMe的配置
  7. 软件工程结对作业01
  8. ASP.NET MVC5----了解我们使用的@HTML帮助类
  9. 阶段3 1.Mybatis_11.Mybatis的缓存_3 mybatis一对一实现延迟加载
  10. Symbian操作系统
  11. 一部手机背后的小镇青年:吃着蜜糖、喝着毒药
  12. 【已解决】Win 10 切换程序时,默认输入法始终为英文,抓狂,解决办法
  13. 美女直播这么火,那你知道怎么测试直播软件吗?
  14. 计算机网络导论 虚电路 X.25 帧中继 ATM
  15. 噩梦射手(SurvivalShooter)教程(八)
  16. OpenGL 相关的理论
  17. 如何把图片上的文字转换成可编辑的文档文字?
  18. 黑苹果+win10双系统折腾笔记
  19. 立创EDA之导出BOM
  20. 2019~2021近三年天梯赛L2题目练习

热门文章

  1. win怎么在计算机里按日期搜索文件,win10系统如何按指定修改日期搜索文件
  2. Mysql语句(二)
  3. c#winform之TextBox
  4. Synchronized相关的面试题
  5. 《雪中悍刀行》读后感
  6. 树莓派can总线_RPi 2B: CAN总线通信 - 通过OBD-II接口获取车辆信息
  7. 太合音乐领千千音乐突围:在线音乐铜墙铁壁难闯
  8. 经典算法系列之不死神兔
  9. 懂的android基础如何面试月薪过万
  10. java根据身份证号码得到生日和性别