android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch
86 阅读
0 评论
57 点赞
我是靠谱客的博主 风趣秋天,最近开发中收集的这篇文章主要介绍android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch
2016-02-16 13:40
2705人阅读
评论(8)
收藏
举报
分类:
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
因为项目需要,最近研究了下百度地图的SDK,简单记录一些点。
准备工作
1.下载SDK及demo
下载地址:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download
2.申请key
教程地址:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key
key需要用到app的包名和签名证书的SHA1值
如果需要使用 周边雷达 功能,需要再注册一个,否则无法使用
周边雷达注册地址:http://lbsyun.baidu.com/index.php?title=radar
测试代码
周边雷达-Radar相关
[java]
view plain
copy
- 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();
- }
- }
[java]
view plain
copy
- // 初始化SDK
- SDKInitializer.initialize(getApplicationContext());
- // 初始化handler
- BDRadarTest.init(context);
- // 开始
- BDRadarTest.startRadar();
周边搜索-PoiSearch相关
[java]
view plain
copy
- 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 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch的全部内容,希望文章能够帮你解决android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
- 本文分类:android百度地图
- 浏览次数:86 次浏览
- 发布日期:2023-09-22 12:25:27
- 本文链接:https://www.kaopuke.com/article/k-p-k_14_uzo_2_f5_13_j_22_w.html
发表评论 取消回复