android 百度周边雷达,android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch
因为项目需要,最近研究了下百度地图的SDK,简单记录一些点。
准备工作
1.下载SDK及demo
2.申请key
key需要用到app的包名和签名证书的SHA1值
如果需要使用 周边雷达 功能,需要再注册一个,否则无法使用
测试代码
周边雷达-Radar相关
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.radar.RadarNearbyInfo;
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;
public class BDRadarTest {
private static final String TAG = BDRadarTest.class.getSimpleName();
private static RadarSearchManager mRSManager = null;
private static LocationClient mLocClient = null;
private static LatLng mLatLng = null;
private static Handler mHandler = null;
private static Context mContext = null;
public static void init(Context context) {
mContext = context;
mHandler = new Handler() {
@Override
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 0:
goStartRadar();
break;
case 1:
goGetLocation();
break;
case 2:
goUploadInfo(mLatLng);
break;
case 3:
goRadar(mLatLng);
break;
case 4:
goClear();
break;
case 5:
goDestory();
break;
default:
break;
}
}
};
}
private static RadarSearchListener mRSListener = new RadarSearchListener() {
@Override
public void onGetUploadState(RadarSearchError err) {
Log.i(TAG, "UploadState");
if (err == RadarSearchError.RADAR_NO_ERROR) {
Log.i(TAG, "UploadState OK");
mHandler.sendEmptyMessage(3);
} else {
Log.i(TAG, "UploadState err:" + err);
mHandler.sendEmptyMessage(4);
}
}
@Override
public void onGetNearbyInfoList(RadarNearbyResult result,
RadarSearchError err) {
Log.i(TAG, "NearbyInfoList");
if (err == RadarSearchError.RADAR_NO_ERROR) {
Log.i(TAG, "NearbyInfoList OK");
//totalNum:3
//pageIndex:0
//pageNum:1
//infoList.size:3
//info userid:123
//info distance:814
//info comments:1
//info timeStamp:Mon Feb 15 18:24:49 格林尼治标准时间+0800 2016
Log.i(TAG, "totalNum:" + result.totalNum);// 总结果个数
Log.i(TAG, "pageIndex:" + result.pageIndex);// 页码
Log.i(TAG, "pageNum:" + result.pageNum);// 总页数
Log.i(TAG, "infoList.size:" + result.infoList.size());
for (int i = 0; i < result.infoList.size(); i++) {
RadarNearbyInfo info = result.infoList.get(i);
Log.i(TAG, "info userid:" + info.userID);// userid
Log.i(TAG, "info distance:" + info.distance);// 距离
Log.i(TAG, "info comments:" + info.comments);// 备注
Log.i(TAG, "info timeStamp:" + info.timeStamp);// 上传位置时的时间戳
}
} else {
Log.i(TAG, "NearbyInfoList err:" + err);
}
mHandler.sendEmptyMessage(4);
}
@Override
public void onGetClearInfoState(RadarSearchError err) {
Log.i(TAG, "ClearInfoState");
if (err == RadarSearchError.RADAR_NO_ERROR) {
Log.i(TAG, "ClearInfoState OK");
} else {
Log.i(TAG, "ClearInfoState err:" + err);
}
mHandler.sendEmptyMessage(5);
}
};
public static void startRadar() {
Log.i(TAG, "startRadar");
mHandler.sendEmptyMessage(0);
}
private static void goStartRadar() {
Log.i(TAG, "goStartRadar");
// 获取本地位置--上传位置信息--等待回调--回调成功--开始查询--等待回调--回调中打印结果
mRSManager = RadarSearchManager.getInstance();
mRSManager.setUserID("test01");
mRSManager.addNearbyInfoListener(mRSListener);
// 定位
mHandler.sendEmptyMessage(1);
}
private static void goGetLocation() {
Log.i(TAG, "goGetLocation");
LocationClientOption locOption = new LocationClientOption();
locOption.setIgnoreKillProcess(false);
locOption.setEnableSimulateGps(true);
locOption.setCoorType("bd09ll");
mLocClient = new LocationClient(mContext);
mLocClient.setLocOption(locOption);
mLocClient.registerLocationListener(new BDLocationListener() {
@Override
public void onReceiveLocation(BDLocation location) {
Log.i(TAG, "onReceiveLocation");
mLatLng = new LatLng(location.getLatitude(),
location.getLongitude());
mHandler.sendEmptyMessage(2);
// 定位成功后销毁
mLocClient.stop();
}
});
mLocClient.start();
}
private static void goUploadInfo(LatLng ll) {
Log.i(TAG, "goUploadInfo");
RadarUploadInfo info = new RadarUploadInfo();
info.comments = "m";
info.pt = ll;
mRSManager.uploadInfoRequest(info);
}
private static void goRadar(LatLng ll) {
Log.i(TAG, "goRadar");
RadarNearbySearchOption option = new RadarNearbySearchOption();
option.centerPt(ll);// 中心点
option.pageCapacity(10);// 每页包含的结果数
option.pageNum(0);// 当前需要查询的页码index,从0开始
option.radius(1000);// 搜索半径
mRSManager.nearbyInfoRequest(option);
}
private static void goClear() {
Log.i(TAG, "goClear");
mRSManager.clearUserInfo();
}
private static void goDestory() {
Log.i(TAG, "goDestory");
mRSManager.removeNearbyInfoListener(mRSListener);
mRSManager.destroy();
}
}
调用代码:
// 初始化SDK
SDKInitializer.initialize(getApplicationContext());
// 初始化handler
BDRadarTest.init(context);
// 开始
BDRadarTest.startRadar();
周边搜索-PoiSearch相关
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.core.PoiInfo;
import com.baidu.mapapi.search.core.SearchResult.ERRORNO;
import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
import com.baidu.mapapi.search.poi.PoiDetailResult;
import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
import com.baidu.mapapi.search.poi.PoiResult;
import com.baidu.mapapi.search.poi.PoiSearch;
import com.baidu.mapapi.search.poi.PoiSortType;
public class BDPoiTest {
private static final String TAG = BDPoiTest.class.getSimpleName();
private static PoiSearch mPoiSManager = null;
private static LocationClient mLocClient = null;
private static LatLng mLatLng = null;
private static Handler mHandler = null;
private static Context mContext = null;
public static void init(Context context) {
mContext = context;
mHandler = new Handler() {
@Override
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 0:
goStartPoi();
break;
case 1:
goGetLocation();
break;
case 2:
goPoiSearch(mLatLng);
break;
case 3:
goDestory();
break;
default:
break;
}
}
};
}
private static OnGetPoiSearchResultListener mPoiResultListener = new OnGetPoiSearchResultListener() {
@Override
public void onGetPoiResult(PoiResult result) {
if (result.error == ERRORNO.NO_ERROR) {
Log.i(TAG, "GetPoiResult OK");
//totalNum:45
//totalPageNum:5
//pageIndex:0
//pageCapacity:10
//isHasAddrInfo:false
//poi.size:10
//info address:北京市东城区王府井大街277号(近好友世界商场)
//info city:北京市
//info name:酷时代游艺世界
//info phoneNum:(010)65225696
//info postCode:null
//info uid:34059f97e013925471455bce
//info hasCaterDetails:false
//info isPano:true
//info location:latitude: 39.91824597245212, longitude: 116.41649542740966
//info type:POINT
Log.i(TAG, "totalNum:" + result.getTotalPoiNum());// 总结果个数
Log.i(TAG, "totalPageNum:" + result.getTotalPageNum());// 总页数
Log.i(TAG, "pageIndex:" + result.getCurrentPageNum());// 页码
Log.i(TAG, "pageCapacity:" + result.getCurrentPageCapacity());// 本页的结果数,可能小于本页可显示的结果数
Log.i(TAG, "isHasAddrInfo:" + result.isHasAddrInfo());
Log.i(TAG, "poi.size:" + result.getAllPoi().size());
if (result.isHasAddrInfo()) {// 如果为false,则getAllAddr为空
Log.i(TAG, "addr.size:" + result.getAllAddr().size());
}
for (int i = 0; i < result.getAllPoi().size(); i++) {
PoiInfo info = result.getAllPoi().get(i);
Log.i(TAG, "info address:" + info.address);// 地址
Log.i(TAG, "info city:" + info.city);// 城市
Log.i(TAG, "info name:" + info.name);// 名称
Log.i(TAG, "info phoneNum:" + info.phoneNum);// 电话
Log.i(TAG, "info postCode:" + info.postCode);// 邮编
Log.i(TAG, "info uid:" + info.uid);// uid,用于后面查询DetailResult
Log.i(TAG, "info hasCaterDetails:" + info.hasCaterDetails);// 是否有详细信息
Log.i(TAG, "info isPano:" + info.isPano);// 是否有全景
Log.i(TAG, "info location:" + info.location);// 经纬度
Log.i(TAG, "info type:" + info.type);// 类型
}
} else {
Log.i(TAG, "GetPoiResult err:" + result.error);
}
mHandler.sendEmptyMessage(3);
}
@Override
public void onGetPoiDetailResult(PoiDetailResult result) {
mHandler.sendEmptyMessage(3);
}
};
public static void startPoi() {
Log.i(TAG, "startPoi");
mHandler.sendEmptyMessage(0);
}
private static void goStartPoi() {
Log.i(TAG, "goStartPoi");
// 获取本地位置--上传位置信息--等待回调--回调成功--开始查询--等待回调--回调中打印结果
mPoiSManager = PoiSearch.newInstance();
mPoiSManager.setOnGetPoiSearchResultListener(mPoiResultListener);
// 定位
mHandler.sendEmptyMessage(1);
}
private static void goGetLocation() {
Log.i(TAG, "goGetLocation");
LocationClientOption locOption = new LocationClientOption();
locOption.setIgnoreKillProcess(false);
locOption.setEnableSimulateGps(true);
locOption.setCoorType("bd09ll");
mLocClient = new LocationClient(mContext);
mLocClient.setLocOption(locOption);
mLocClient.registerLocationListener(new BDLocationListener() {
@Override
public void onReceiveLocation(BDLocation location) {
Log.i(TAG, "onReceiveLocation");
mLatLng = new LatLng(location.getLatitude(),
location.getLongitude());
mHandler.sendEmptyMessage(2);
// 定位成功后销毁
mLocClient.stop();
}
});
mLocClient.start();
}
private static void goPoiSearch(LatLng ll) {
Log.i(TAG, "goPoiSearch");
PoiNearbySearchOption option = new PoiNearbySearchOption();
option.location(ll);
option.radius(3000);
option.sortType(PoiSortType.distance_from_near_to_far);
option.keyword("棋牌室");
option.pageCapacity(10);// 每页最多含多少条结果
option.pageNum(0);// 查询的页码
mPoiSManager.searchNearby(option);
}
private static void goDestory() {
Log.i(TAG, "goDestory");
mPoiSManager.destroy();
}
}
调用方式与之前相似。
注意!这里有坑
所有流程都在主线程或handler里做,否则可能会报错
上传信息时,用户名和备注有限制,具体限制未知,如果上传失败,可以尝试修改
Option的pageNum指的是要查询的page的index,从0开始
周边雷达,需要上传位置信息后,才能被搜索到
周边雷达的位置信息会一直保留,除非自己主动clear
poi搜索结果中,如果isHasAddrInfo为false,那么getAllAddr将是一个null
android 百度周边雷达,android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch相关推荐
- Android第三方开发包之高德地图SDK使用介绍
Android第三方开发包之高德地图SDK使用介绍 前言 准备 Android Studio 配置工程 1,新建一个 Empty Activity 应用项目. 2,添加SDK 3,集成SDK 显示地图 ...
- android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch
因为项目需要,最近研究了下百度地图的SDK,简单记录一些点. 准备工作 1.下载SDK及demo 下载地址:http://lbsyun.baidu.com/index.php?title=androi ...
- Android百度地图——SDK版本v2.0.0初探
大过年的,没回家.听着外面烟花爆竹声阵阵,大冷天的一个人也不想出去转.城市不管多么繁华,一个人都是感觉"无味".最近在研究百度地图的API使用,在使用过程中遇到些问题,有些心得吧, ...
- Android第三方开发包值高德地图SDK使用介绍
(1)配置Project的build.gradle:添加jcenter的仓库地址 文件位置: 代码: allprojects { repositories { jcenter() // 或者 mave ...
- Android第三方开发包值高德地图SDK使用介绍,android面试基础
jcenter() // 或者 mavenCentral() } } (2)配置主工程文件的build.gradle文件 文件位置: 代码: android { defaultConfig { ndk ...
- android6.0 百度地图,Android百度地图SDK 导航SDK2.0结合定位SDK6.0.5的导航参数设置方法...
是否执行成功 其中对于算路的节点,现在有了一个新的规则,可见BNRoutePlanNode 取文档的释义如下: public BNRoutePlanNode(double longitude, dou ...
- Android --- 百度地图 SDK v3.6.0 以上版本找不到 PoiOverlay 类
解决方法: 下载下面的包,解压 链接:https://pan.baidu.com/s/1Wux0Y8-ZygYL5v0gRanVqw 提取码:ccxx 将下面的文件放到你的项目中
- 百度地图SDK v3.6.0以上版本找不到PoiOverlay类的解决方法
最近测试本人使用的是百度地图用SDK v3.7.3的版本,使用POI检索功能的时候,想直接使用PoiOverlay类创建对象把检索出来的结果在地图上表示出来.按照正常的方法如下: 可是无论如何也没有也 ...
- 百度地图SDK v3.6.0以上版本setOnMarkerClickListener 失效的问题解决
不多说上代码 原本是这样的 我测试的版本是 百度的 3.7.3版本. 再次使用上面代码 失效了. 后来论坛各种找,没有结果.再后来 去看百度的源码.发现 由于这个 百度OverLay这个类开源了.所以 ...
最新文章
- c语言答案填空选择,C语言试题配答案
- python中scrapy框架_python的scrapy框架
- bzoj 4010 菜肴制作
- SAP Commerce的Content Page,Content Slot和Component在Spartacus里的应用
- PTA 数据结构与算法题目集(中文)
- 基于Maven的spring_security入门
- PersonGraphDataSet近十万的开放人物关系图谱项目
- Qt中设置窗体固定大小的方法
- Facebook 又搞事,违反竞业协议被起诉,PyTorch 关键技术疑侵权
- influxdb 统计 每天 指定时间段_抖音短视频什么时间段发布?容易上热门!
- 分享一段php获取随意时间的前一天代码
- paip.图片文件上传功能总结
- 三步完美完成wordpress外链跳转
- 解决2345劫持主页的办法--火绒2345专杀
- m2增长率曲线_中国通胀率(中国m2历年数据曲线图)
- 软件工程——团队作业4
- Visual Studio Code,一款功能强大且轻巧的免费代码集成编辑器介绍
- 游戏建模行业就国内发展的前景,以及行业变化是如何的?
- 【亲测可用】云之道知识付费v2独立版3.0.1全开源+前后端源码
- 人工智能?AI?都是什么 四句话就让你彻底明白