GPS-利用百度SDK获取当前的位置信息

GPS-利用百度SDK获取当前的位置信息

第一步:

登录百度开发平台---> 点击打开链接

有号的登录,没号的注册。

下载相关Sdk:点击打开链接  只下载AndroidSdk定位!!!这里就不图片展示了,发链接咯~

-----------------------将libs下的文件尽数复制到你的工程目录下---------------
获取密钥   注册过的用户就可以创建应用了
          这里需要的是一个SHA1



创建完应用以后就可以获取到key值(以后会用到)

第二步:配置环境

配置server:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">    
  2. </service>    


声明权限:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <!-- 这个权限用于进行网络定位-->    
  2. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>    
  3. <!-- 这个权限用于访问GPS定位-->    
  4. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>    
  5. <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->    
  6. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>    
  7. <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->    
  8. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>    
  9. <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->    
  10. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>    
  11. <!-- 用于读取手机当前的状态-->    
  12. <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>    
  13. <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->    
  14. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>    
  15. <!-- 访问网络,网络定位需要上网-->    
  16. <uses-permission android:name="android.permission.INTERNET" />    
  17. <!-- SD卡读取权限,用户写入离线定位数据-->    
  18. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>   

配置appkey


[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <meta-data    
  2.             android:name="com.baidu.lbsapi.API_KEY"    
  3.             android:value="key" />       //key    

第三步:代码书写


可以放在点击事件里面----点击获取位置     也可以配置在程序入口  详细的注释在代码中----------

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 点击获取 请求百度返回位置    
  2.             // 实现定位                              //此上下文最好配置在全局AppLication里面    
  3.             mLocationClient = new LocationClient(MyApplication.getContext()); // 声明LocationClient类    
  4.             mLocationClient.registerLocationListener(new BDLocationListener() {    
  5.     
  6.                 @Override    
  7.                 public void onReceiveLocation(BDLocation location) {    
  8.                     // TODO Auto-generated method stub    
  9.                     StringBuffer sb = new StringBuffer(256);    
  10.                     sb.append("time : ");    
  11.                     sb.append(location.getTime());    
  12.                     sb.append("\nerror code : ");    
  13.                     sb.append(location.getLocType());    
  14.                     sb.append("\nlatitude : ");    
  15.                     sb.append(location.getLatitude());    
  16.                     sb.append("\nlontitude : ");    
  17.                     sb.append(location.getLongitude());    
  18.                     sb.append("\nradius : ");    
  19.                     sb.append(location.getRadius());    
  20.                     if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果    
  21.                         sb.append("\nspeed : ");    
  22.                         sb.append(location.getSpeed());// 单位:公里每小时    
  23.                         sb.append("\nsatellite : ");    
  24.                         sb.append(location.getSatelliteNumber());    
  25.                         sb.append("\nheight : ");    
  26.                         sb.append(location.getAltitude());// 单位:米    
  27.                         sb.append("\ndirection : ");    
  28.                         sb.append(location.getDirection());// 单位度    
  29.                         sb.append("\naddr : ");    
  30.                         sb.append(location.getAddrStr());    
  31.                         sb.append("\ndescribe : ");    
  32.                         sb.append("gps定位成功");    
  33.     
  34.                     } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果    
  35.                         sb.append("\naddr : ");    
  36.                         sb.append(location.getAddrStr());    
  37.                         // 运营商信息    
  38.                         sb.append("\noperationers : ");    
  39.                         sb.append(location.getOperators());    
  40.                         sb.append("\ndescribe : ");    
  41.                         sb.append("网络定位成功");    
  42.                     } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果    
  43.                         sb.append("\ndescribe : ");    
  44.                         sb.append("离线定位成功,离线定位结果也是有效的");    
  45.                     } else if (location.getLocType() == BDLocation.TypeServerError) {    
  46.                         sb.append("\ndescribe : ");    
  47.                         sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因");    
  48.                     } else if (location.getLocType() == BDLocation.TypeNetWorkException) {    
  49.                         sb.append("\ndescribe : ");    
  50.                         sb.append("网络不同导致定位失败,请检查网络是否通畅");    
  51.                     } else if (location.getLocType() == BDLocation.TypeCriteriaException) {    
  52.                         sb.append("\ndescribe : ");    
  53.                         sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");    
  54.                     }    
  55.                     sb.append("\nlocationdescribe : ");    
  56.                     sb.append(location.getLocationDescribe());// 位置语义化信息    
  57.                     List<Poi> list = location.getPoiList();// POI数据    
  58.                     if (list != null) {    
  59.                         sb.append("\npoilist size = : ");    
  60.                         sb.append(list.size());    
  61.                         for (Poi p : list) {    
  62.                             sb.append("\npoi= : ");    
  63.                             sb.append(p.getId() + " " + p.getName() + " "    
  64.                                     + p.getRank());    
  65.                         }    
  66.                     }Log.d("<span style="font-family: Arial, Helvetica, sans-serif;">location</span>",sb.toString);//打印请求信息    
  67.                     //将位置和时间赋值给控件显示    
  68.                     menuweizhi.setText(location.getLocationDescribe());    
  69.                     menuweizhitime.setText(location.getTime());    
  70.     
  71.                 }    
  72.             }); // 注册监听函数    
  73.             // 开启定位    
  74.             mLocationClient.start();    
  75.             // 配置信息    
  76.             LocationClientOption option = new LocationClientOption();    
  77.             // 配置一次    
  78.             option.setLocationMode(LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备    
  79.             option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系    
  80.             option.setScanSpan(0);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的    
  81.             option.setIsNeedAddress(true);// 可选,设置是否需要地址信息,默认不需要    
  82.             option.setOpenGps(true);// 可选,默认false,设置是否使用gps    
  83.             option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果    
  84.             option.setIsNeedLocationDescribe(true);// 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”    
  85.             option.setIsNeedLocationPoiList(true);// 可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到    
  86.             option.setIgnoreKillProcess(false);// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死    
  87.             option.SetIgnoreCacheException(false);// 可选,默认false,设置是否收集CRASH信息,默认收集    
  88.             option.setEnableSimulateGps(false);// 可选,默认false,设置是否需要过滤gps仿真结果,默认需要    
  89.             mLocationClient.setLocOption(option);    
  90.             // 获取地理信息    
  91.             mLocationClient.requestLocation();    

第四步:有无返回码

运行完总会效果不尽如人意什么的 这里可以参照返回码


61 : GPS定位结果,GPS定位成功。

62 : 无法获取有效定位依据,定位失败,请检查运营商网络或者wifi网络是否正常开启,尝试重新请求定位。

63 : 网络异常,没有成功向服务器发起请求,请确认当前测试手机网络是否通畅,尝试重新请求定位。

65 : 定位缓存的结果。

66 : 离线定位结果。通过requestOfflineLocaiton调用时对应的返回结果。

67 : 离线定位失败。通过requestOfflineLocaiton调用时对应的返回结果。

68 : 网络连接失败时,查找本地离线定位时对应的返回结果。

161: 网络定位结果,网络定位定位成功。

162: 请求串密文解析失败,一般是由于客户端SO文件加载失败造成,请严格参照开发指南或demo开发,放入对应SO文件。

167: 服务端定位失败,请您检查是否禁用获取位置信息权限,尝试重新请求定位。

502: key参数错误,请按照说明文档重新申请KEY。

505: key不存在或者非法,请按照说明文档重新申请KEY。

601: key服务被开发者自己禁用,请按照说明文档重新申请KEY。

602: key mcode不匹配,您的ak配置过程中安全码设置有问题,请确保:sha1正确,“;”分号是英文状态;且包名是您当前运行应用的包名,请按照说明文档重新申请KEY。

501~700:key验证失败,请按照说明文档重新申请KEY。


布局其实没什么  3个控件   

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <com.hao.news.view.MyTextView     
  2.     android:layout_width="fill_parent"    
  3.     android:layout_height="wrap_content"    
  4.     android:text="点击获取最新地理位置"    
  5.     android:id="@+id/menu_tianqi"    
  6.     android:textSize="18sp"    
  7.     android:layout_marginTop="40dp"    
  8.     />    
  9. <TextView     
  10.     android:layout_width="wrap_content"    
  11.     android:layout_height="wrap_content"    
  12.     android:layout_marginTop="25dp"    
  13.     android:text="位置显示"    
  14.     android:id="@+id/menu_weizhi"    
  15.     android:textColor="#ff0000"    
  16.     />    
  17. <TextView     
  18.     android:layout_width="wrap_content"    
  19.     android:layout_height="wrap_content"    
  20.     android:text="获取时间"    
  21.     android:id="@+id/menu_weizhi_time"    
  22.     android:layout_marginLeft="120dp"    
  23.     android:textColor="#00ffff"    
  24.     /> 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,可以按照以下步骤使用百度地图JS SDK获取当前位置: 1. 在页面中引入百度地图JS SDK的代码: ```html <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script> ``` 其中,`ak`参数需要替换成您申请的百度地图应用的密钥。 2. 创建地图实例并获取当前位置信息: ```javascript // 创建地图实例 var map = new BMap.Map("container"); // 创建定位对象 var geolocation = new BMap.Geolocation(); // 获取当前位置信息 geolocation.getCurrentPosition(function (position) { if (this.getStatus() === BMAP_STATUS_SUCCESS) { // 获取经度和纬度 var lng = position.point.lng; var lat = position.point.lat; // TODO: 处理获取到的位置信息 } else { // 定位失败 alert('定位失败,请重试!'); } }, {enableHighAccuracy: true}); ``` 在以上代码中,`BMap.Map("container")`表示创建地图实例,并将地图放置在id为`container`的HTML元素中。`BMap.Geolocation()`表示创建定位对象。`geolocation.getCurrentPosition()`表示获取当前位置信息,回调函数中的`position`参数包含了获取到的位置信息。 3. 处理获取到的位置信息获取位置信息后,您可以进行进一步的处理,比如在地图上标注当前位置: ```javascript // 在地图上标注当前位置 var point = new BMap.Point(lng, lat); var marker = new BMap.Marker(point); map.addOverlay(marker); map.centerAndZoom(point, 15); ``` 以上代码将当前位置标注在地图上,并将地图中心点设置为当前位置。您也可以根据自己的需求进行进一步的处理。 注意:使用百度地图API需要申请密钥,且每日有访问次数限制,建议在开发时进行注册申请。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值