深入学习百度地图Android SDK v4.0.0【第七关】周边雷达
来源:互联网 发布:可可验证源码 编辑:程序博客网 时间:2024/05/21 17:32
本来想学习一下Andriod Wear的开发,但是买不起Wear啊!直接跳过,开始学习周边雷达地图部分!这个功能非常有用,能知道你周围和你使用相同软件的人,牛郎织女一人安装一个,再也不用去鹊桥相会了,随时都能知道对方在哪里,可是怎么多出来那么多牛郎织女!
第一步【注册周边雷达】
要使用此功能,需要对你的想用周边雷达功能的App进行注册,相当于绑定,而且可以绑定多个!周边雷达注册
第二步【上传位置,检索周边】
上传有上传一次和自动时间间隔上传,检索可以查看周边使用此App的人,里面可以填入检索的页数,人数和范围!
第三步【清除用户数据】
最后如果不想再被查看,当然是可以清除你的位置信息的!
感觉很简单,其实各种坑等着你呢!看代码:
package cq.cake.chwl.ui;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import com.baidu.mapapi.model.LatLng;import com.baidu.mapapi.radar.RadarNearbyResult;import com.baidu.mapapi.radar.RadarNearbySearchOption;import com.baidu.mapapi.radar.RadarSearchError;import com.baidu.mapapi.radar.RadarSearchListener;import com.baidu.mapapi.radar.RadarSearchManager;import com.baidu.mapapi.radar.RadarUploadInfo;import com.baidu.mapapi.radar.RadarUploadInfoCallback;import cq.cake.base.BaseToolbarMapActivity;import cq.cake.chwl.R;import cq.cake.util.L;import cq.cake.util.T;/** * 周边雷达功能 * 查看周围都在使用此App的人群 * 利用周边雷达功能,可实现周边(处于同一个周边雷达关系内)用户位置信息检索的能力。 * 检索过程支持距离、时间等约束条件;返回结果支持按照距离、时间远近的排序。 */public class RabarActivity extends BaseToolbarMapActivity implements RadarSearchListener, RadarUploadInfoCallback { RadarSearchManager mManager; String userID = "100"; LatLng pt = new LatLng(106.465712,29.562483); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_rabar); init(); } private void init() { //周边雷达功能模块进行初始化 mManager = RadarSearchManager.getInstance(); //周边雷达设置监听 mManager.addNearbyInfoListener(this); //周边雷达设置用户身份标识,id为空默认是设备标识 mManager.setUserID(userID); } /** * 【1】上传我的位置 * 实际应用中应该取定位到当前位置的经纬度 * 重庆市渝中区沙坪坝师范大学:106.465712,29.562483 */ private boolean upMyAddr() { //上传位置// LatLng pt = new LatLng(106.466343, 29.563757); RadarUploadInfo info = new RadarUploadInfo(); info.comments = "SmallCake"; info.pt = pt; return mManager.uploadInfoRequest(info); } /** * 【2】自动上传我的位置 */ private void autoUpMyAddr() { //设置自动上传的callback和时间间隔 mManager.startUploadAuto(this, 5000); } /** * 【3】关闭自动上传我的位置 */ private void closeUptoUpMyAddr() { //设置自动上传的callback和时间间隔 mManager.stopUploadAuto(); } /** * 【4】周边位置检索 */ private void nearBySearch(){ //构造请求参数,其中centerPt是自己的位置坐标 RadarNearbySearchOption option = new RadarNearbySearchOption().centerPt(pt).pageNum(0).pageCapacity(50).radius(2000); //发起查询请求 mManager.nearbyInfoRequest(option); } /** * 【5】清除用户信息 */ private void clearUserInfo(){ mManager.clearUserInfo(); } /**********************************************下面是各种事件的回调**********************************************************************/ /** * 【1】单次上传位置的回调 * @return */ @Override public void onGetUploadState(RadarSearchError radarSearchError) { L.i("单次上传我的位置onGetUploadState"); // TODO Auto-generated method stub if (radarSearchError == RadarSearchError.RADAR_NO_ERROR) { //上传成功 L.i("上传位置成功"); T.showLong(RabarActivity.this, "上传位置成功"); } else { //上传失败 L.i("上传位置失败"); T.showLong(RabarActivity.this, "单次上传位置失败"); } } /** * 【2】自动上传位置的回调 * @return */ @Override public RadarUploadInfo onUploadInfoCallback() { // TODO Auto-generated method stub //实现上传callback,自动上传 RadarUploadInfo info = new RadarUploadInfo(); info.comments = "SmallCake0"; info.pt = pt; return info; } /** * 【4】周边位置检索回调 * @param radarNearbyResult * @param radarSearchError */ @Override public void onGetNearbyInfoList(RadarNearbyResult radarNearbyResult, RadarSearchError radarSearchError) { L.i("查询周边信息=="+radarSearchError+" 数据是否为空:"+(radarNearbyResult==null)); switch (radarSearchError){ case RADAR_NO_ERROR: T.showLong(RabarActivity.this, "查询周边成功"); break; case RADAR_NO_RESULT: T.showLong(RabarActivity.this, "没有使用此App的人员"); break; default: T.showLong(RabarActivity.this, "失败了!"); break; } } /** * 【5】周边位置检索回调 * @param radarSearchError */ @Override public void onGetClearInfoState(RadarSearchError radarSearchError) { // TODO Auto-generated method stub if (radarSearchError == RadarSearchError.RADAR_NO_ERROR) { //清除成功 T.showLong(RabarActivity.this, "清除位置成功"); } else { //清除失败 T.showLong(RabarActivity.this, "清除位置失败"); } } /** * 最后在停止使用周边雷达功能时,需释放资源 * @return */ private void clearAll(){ //移除监听 mManager.removeNearbyInfoListener(this); //清除用户信息 mManager.clearUserInfo(); //释放资源 mManager.destroy(); mManager = null; } @Override protected void onDestroy() { super.onDestroy(); clearAll(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_rabar,menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); switch (itemId){ case R.id.menu1: upMyAddr(); break; case R.id.menu2: autoUpMyAddr(); break; case R.id.menu3: closeUptoUpMyAddr(); break; case R.id.menu4: nearBySearch(); break; case R.id.menu5: clearUserInfo(); break; } return super.onOptionsItemSelected(item); }}使用遇到的坑:
1.最开始我没有mManager.setUserId();回调毫无反应!官网不是说可以为空,默认是设备标识吗!我就没有设置,好吧,我理解错了。
没有你也得设置个null,这样mManager.setUserId(null);
2.info.comments有长度获取其他限制,如果上次失败你就多试试吧。官网你给我说,你又坑我。
3.要想检索必须先上传自己的位置,我能说还有没有隐私了,偷偷写死自己位置!
最后,我还是没有检索出来范围的人,哪怕我自己也好啊!可以反馈的是没有错误,但是也没有结果!RADAR_NO_RESULT,想想你尝试很多次很多方法都是得到RADAR_NO_RESULT,我不得不开心的笑了!
0 0
- 深入学习百度地图Android SDK v4.0.0【第七关】周边雷达
- 深入学习百度地图Android SDK v4.0.0【第七关】周边雷达
- 深入学习百度地图Android SDK v4.0.0【第一关】基础地图
- 深入学习百度地图Android SDK v4.0.0【第二关】公交地图
- 深入学习百度地图Android SDK v4.0.0【第六关】室内地图
- 深入学习百度地图Android SDK v4.0.0【第八关】离线地图
- 深入学习百度地图Android SDK v4.0.0【第三关】路线规划
- 深入学习百度地图Android SDK v4.0.0【第四关】OpenGL绘制
- 深入学习百度地图Android SDK v4.0.0【第五关】瓦片图层
- 深入学习百度地图Android SDK v4.0.0【第九关】检索功能
- 深入学习百度地图Android SDK v4.0.0【第十关】短链分享
- android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch
- android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch
- Android百度地图之周边雷达
- Android 百度地图SDK 实现获取周边位置POI
- 一、学习百度地图Android SDK v4.3.0 之基础地图
- Android 百度地图周边雷达(v6.1.3)及覆盖物
- Swift - 集成百度地图的周边雷达功能(附样例)
- java语法,是理解、分析和解决任何java程序、框架、工程的万能切入点
- scrollView frame改变时contentOffset会被重置或改变
- LPTHW L16 NOTE
- Android中定时执行任务的3种实现方法
- 关于安卓在共有目录保存数据库并加密
- 深入学习百度地图Android SDK v4.0.0【第七关】周边雷达
- 在MAC上搭载cocos2d-x环境,创建HelloWorld工程
- 循环语句中的break和continue
- 【前端构建】WebPack实例与前端性能优化
- 堆和栈的区别(转过无数次的文章)
- 解决“LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”
- javaScript array(数组)使用字符串作为数组下标的方法
- Maven3路程(一)环境搭建
- CSS的简单学习