百度定位SDK的使用示例

本文基于最新的百度地图定位SDK(V4.0 版本)使用的定位Demo

使用百度地图SDK进行实时定位的主要有6步:

// 启用定位
mBaiduMap.setMyLocationEnabled(true);
// 1. 初始化LocationClient类
mLocationClient = new LocationClient(getApplicationContext());
// 2. 声明LocationListener类(负责监听位置变化)
locationListener = new MyLocationListener();
// 3. 注册监听函数
mLocationClient.registerLocationListener(locationListener);
// 4. 设置参数
LocationClientOption clientOption = new LocationClientOption();
clientOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 设置定位模式
clientOption.setCoorType("bd09ll"); // 设置定位结果类型
clientOption.setScanSpan(5000); // 设置发起定位请求的时间间隔,ms
clientOption.setIsNeedAddress(true); // 设置返回的定位结果包含地址信息
clientOption.setNeedDeviceDirect(true);// 设置返回结果包含手机的方向

// 5. 应用上面的参数
mLocationClient.setLocOption(clientOption);
// 6. 注册位置提醒监听事件

// 7. 开启/关闭 定位SDK
mLocationClient.start();
mLocationClient.stop();

为了实时监听我们位置的变化,我们需要实现BDLocationListener类,获得系统实时的位置信息,并重载onReceiveLocation方法返回位置结果
class MyLocationListener implements BDLocationListener {
// 异步返回的定位结果
@Override
public void onReceiveLocation(BDLocation bdLocation) {
if (bdLocation == null) {
return;
}
locType = bdLocation.getLocType();
Toast.makeText(MainActivity.this, "当前定位的返回值是:" + locType, Toast.LENGTH_SHORT).show();
longitude = bdLocation.getLongitude();
latitude = bdLocation.getLatitude();
if (bdLocation.hasRadius()) {// 判断是否有定位精度半径
radius = bdLocation.getRadius();
}
if (locType == BDLocation.TypeGpsLocation) {//
Toast.makeText(MainActivity.this, "当前速度是:" + bdLocation.getSpeed() + "定位使用卫星数量:"
+ bdLocation.getSatelliteNumber(), Toast.LENGTH_SHORT).show();
} else if (locType == BDLocation.TypeNetWorkLocation) {
addrStr = bdLocation.getAddrStr();// 获取反地理编码(文字描述的地址)
Toast.makeText(MainActivity.this, addrStr, Toast.LENGTH_SHORT).show();
}
direction = bdLocation.getDirection();// 获取手机方向,【0~360°】,手机上面正面朝北为0°
province = bdLocation.getProvince(); // 省份
city = bdLocation.getCity(); // 城市
district = bdLocation.getDistrict(); // 区县
Toast.makeText(MainActivity.this, province + "~" + city + "~" + district, Toast.LENGTH_SHORT).show();
// 构造定位数据
MyLocationData locData = new MyLocationData.Builder()
.accuracy(radius) // 定位精度半径
.direction(direction) // 方向
.latitude(latitude) // 纬度
.longitude(longitude) // 精度
.build();
// 设置定位数据
mBaiduMap.setMyLocationData(locData);
LatLng ll = new LatLng(latitude, longitude);
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(msu);
}
}

  

时间: 2025-01-17 20:36:33

百度定位SDK的使用示例的相关文章

Android使用百度定位SDK 方法及错误处理

之前我的项目中的位置定位使用的是基站方法,使用的Google提供的API,但是前天中午突然就不返回数据了,到网上搜了一下才知道,Google的接 口不提供服务了,基于时间紧迫用了百度现有的SDK,但是在使用过程中第一次获取位置总是空值,经过多次实验终于成功.当然,如果需要精确的位置,你可以 再加上位置偏移算法.我的应用对这个要求不高,就没做,一搜一大把,就不多说了. 下面这段话来自 百度地图API>定位SDK 百度地图定位SDK免费对外开放,无需申请key.在使用百度定位SDK前,希望先阅读百度

百度定位SDK:弥补Android基站WIFI定位缺失

http://tech.qq.com/a/20120524/000347.htm 如今,基于位置信息的移动应用越来越多,从餐饮.购物等本地生活服务,到定向广告的匹配.移动社交网络的构建,LBS类应用的开发离不开定位功能.国内大多数的地图SDK工具,都提供了免费.精准的定位功能,方便开发者以定位功能为基础,延伸出丰富.交互体验更佳的移动应用. 不过,仅仅是地图定位功能,不少SDK工具也都支持存在着较大差别.最近,一些地图应用的开发者都碰到了这样一个难题,一个由高校学生组织的开发团队,推出了一款LB

百度定位SDK实现获取当前经纬度及位置

使用Android自带的LocationManager和Location获取位置的时候,经常会有获取的location为null的情况,并且操作起来也不是很方便,在这个Demo里我使用了百度地图API中的定位SDK,可以一次性获取当前位置经纬度以及详细地址信息,还可以获取周边POI信息,同时可以设定位置通知点,当到达某一位置时,发出通知信息等方式来告知用户.jar包下载以及官方文档请参照:百度定位SDK,前提是需要注册百度开发者账号.下面来看看定位的基本原理,目前,定位SDK可以通过GPS.基站

集成百度地图SDK,百度定位SDK,二维码扫描

集成百度地图SDK,百度定位SDK,二维码扫描,运用xUtils(https://github.com/wyouflf/xUtils)开发框架,外国仿微信底部弹窗 注意:因上传时忘记删除libs下的locSDK_3.1.jar 和armeabi/liblocSDK3.so包,请下载源码的朋友把这两个文件给删除下再导入项目运行. 标签: xUtils [1].[文件] Demo.apk ~ 2MB    下载(202) 跳至 [1] [2] [3] [4] [5] [6] [2].[文件] Dem

android中使用百度定位sdk实时的计算移动距离

前段时间因为项目需求,通过百度定位adk写了一个实时更新距离的程序(类似大家坐的士时,车上的里程表),遇到很多技术点,总结了一下发表出来和大家相互学习.直接要求定位具体的位置应该是不难的,只需要引入百度定位adk,并配置相关参数就可以完成,显示百度地图也类似,但是如果需要不断的实时显示移动距离,GPS定位从一个点,到第二个点,从第二个点,到第三个点,从第三个点......,移动距离是多少呢?不得不说,要实现这种需求的确存在一定的难度. 目标:使用百度定位sdk开发实时移动距离计算功能,根据经纬度

百度地图SDK V3.2 和百度定位SDK V4.2 完成定位功能

百度地图SDK V3.2 和百度定位SDK V4.2 完成定位功能 1.要完成定位功能,不光是要下载百度地图SDK(baidumapapi_v3_2_0.jar ; libBaiduMapSDK_v3_2_0_15.so),还需要下载百度的定位SDK(locSDK_4.2.jar; liblocSDK4d.so),需要到官网下载如上述的库和jar包.并且需要将jar包右键添加到build path中 2.需要在manifest.xml文件中添加需要的key,service以及权限.如果没有添加s

百度定位SDK错误:Couldn’t load locSDK3: findLibrary returned null

在使用百度定位SDK的时候,明明已经加入了liblocSDK3.so,Manifest中也添加了相应权限,注册了com.baidu.location.f服务.但总是无法定位.提示错误java.lang.UnsatisfiedLinkError: Couldn't load locSDK3: findLibrary returned null. 根据错误提示是无法找到locSDK3这个库,但是又明明在armeabi中加入了liblocSDK3.so.被这个问题困扰了很久.在做NDK开发的时候,ND

百度定位SDK

差不多按照官方教程就可以了.但有一些小问题教程上没有提到 1.可以使用和百度地图同一个ak,但是好像要分开,不然返回有错..我也不知道为什么 <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="app key" /> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value=&q

百度定位Sdk 162错误解决方法之Android Studio

前言 此方法只针对开发环境是Android Studio 查看百度开发文档 官方对162错误解释是: 162: 请求串密文解析失败. 只是简单的说了一句, 完全不知道是什么错误 经过百度 大多数开发者的实战经验是so文件加载失败 . 经过验证确实是(我开发过程 遇到的162错误 也是so 文件加载失败,) 找到原因了,下面介绍解决的办法 解决方法 1.在"src/main"目录中新建名为"jniLibs"的目录. 2.将so文件复制.粘贴到"jniLibs