百度地图----检索功能的使用
百度地图—-检索功能的使用
ONE Goal ,ONE Passion !
上面几篇写了如何集成以及使用百度地图和覆盖物.现在就说说百度地图的检索功能;
目前百度地图SDK所集成的检索服务包括:POI检索、公交信息查询、线路规划、地理编码、在线建议查询、短串分享。
PIO检索:
POI(Point of Interest),中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。
下面将以 周边检索 为例,向大家介绍如何使用检索服务。
// 第一步:创建POI检索实例 poiSearch = PoiSearch.newInstance();//第二步:创建检索选项---即检索的一些条件 PoiNearbySearchOption nearbySearchOption = new PoiNearbySearchOption();// 设置检索中心点nearbySearchOption.location(new LatLng(34.7568711, 113.663221));//设置检索的关键字---如超市,酒店,药店等nearbySearchOption.keyword("超市");// 检索半径,单位是米nearbySearchOption.radius(1000);//检索页数nearbySearchOption.pageNum(10);//第三步: 发起附近检索请求poiSearch.searchNearby(nearbySearchOption);//第四步: 设置POI检索监听者; poiSearch.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {/*** 得到检索结果* @param poiResult---检索结果*/@Overridepublic void onGetPoiResult(PoiResult poiResult) {final List<PoiInfo> allPoi = poiResult.getAllPoi();System.out.println("检索地址" + allPoi);for (int i = 0; i < allPoi.size(); i++) {System.out.println("检索地址" + allPoi.get(i).address);}}/*** 详细信息检索的回调方法* @param poiDetailResult ---检索结果* 当检索的是 POI详情信息 时才会回调这个方法* 如----* 发起下面检索:// uid是POI检索中获取的POI ID信息
poiSearch .searchPoiDetail((new PoiDetailSearchOption()).poiUid(uid));
此时结果会出现在poiDetailResult中*/@Overridepublic void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {final LatLng location = poiDetailResult.getLocation();System.out.println("location----" + location);}});}});
公交信息检索:
利用BusLineSearch方法,开发者可查询公交线路的详情信息,实现方式如下:
第一步,发起POI检索,获取相应线路的UID;
//以城市内检索为例,详细方法请参考POI检索部分的相关介绍
poiSearch.searchInCity((new PoiCitySearchOption()).city("北京").keyword("717"));
第二步,在POI检索结果中判断该POI类型是否为公交信息;
// 此方法同上是poiSearch设置监听后回调的方法./*** 得到检索结果* @param poiResult---检索结果*/@Override
public void onGetPoiResult(PoiResult result) { if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { return; } //遍历所有POI,找到类型为公交线路的POI for (PoiInfo poi : result.getAllPoi()) { if (poi.type == PoiInfo.POITYPE.BUS_LINE ||poi.type == PoiInfo.POITYPE.SUBWAY_LINE) { //说明该条POI为公交信息,获取该条POI的UID busLineId = poi.uid; break; } }
}
第三步,定义并设置公交信息结果监听者(与POI类似),并发起公交详情检索;
//如下代码为发起检索代码,定义监听者和设置监听器的方法与POI中的类似
mBusLineSearch.searchBusLine((new BusLineSearchOption() .city("北京”") .uid(busLineId)));
线路规划:
下面的用法基本和上面是一样的,就不在一步一步的解释了,直接使用百度官方解释了.
公交线路规划:
实现公交线路规划的方式如下:
第一步,创建公交线路规划检索实例;
mSearch = RoutePlanSearch.newInstance();
第二步,创建公交线路规划检索监听者;
OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() { public void onGetWalkingRouteResult(WalkingRouteResult result) { // } public void onGetTransitRouteResult(TransitRouteResult result) { if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(RoutePlanDemo.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show(); } if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) { //起终点或途经点地址有岐义,通过以下接口获取建议查询信息 //result.getSuggestAddrInfo() return; } if (result.error == SearchResult.ERRORNO.NO_ERROR) { //创建路线覆盖物来 显示路线TransitRouteOverlay overlay = new MyTransitRouteOverlay(mBaidumap); mBaidumap.setOnMarkerClickListener(overlay); overlay.setData(result.getRouteLines().get(0)); overlay.addToMap(); overlay.zoomToSpan(); } } public void onGetDrivingRouteResult(DrivingRouteResult result) { // }
};
第三步,设置公交线路规划检索监听者;
mSearch.setOnGetRoutePlanResultListener(listener);
第四步,准备检索起、终点信息;
//创建节点
PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "龙泽");
PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "西单");
第五步,发起公交线路规划检索;
mSearch.transitSearch((new TransitRoutePlanOption()) .from(stNode) .city("北京") .to(enNode));
第六步,释放检索实例;
mSearch.destory();
公交线路规划结果的JSON结构图如下:
TransitRouteResult { //换乘路线结果 TaxiInfo: { //打车信息 int totalPrice ; //总价格 String desc; //打车描述信息 int distance; //距离 int duration; //时间 int perKMPrice; //单价 int startPrice; //起步价 } List<TransitRouteLine> : [ //换乘方案 { TaxiInfo taxitInfo, //打车信息 VehicleInfo vehicleInfo, //交通工具信息 RouteNode entrance, //路段入口 RouteNode exit, //路段出口 TransitRouteStepType, //路段类型 String instructions, //路段说明 int distance, //距离 int duration //时间 }, …… ] SuggestAddrInfo: { //建议起终点信息 List<PoiInfo> suggestStartNode; //建议起点 List<PoiInfo> suggestEndNode; //建议终点 List<List<PoiInfo>> suggestWpNode; //建议途经点 List<CityInfo> suggestStartCity; //建议起点城市 List<CityInfo> suggestEndCity; //建议终点城市 List<List<CityInfo>> suggestWpCity; //建议途经点城市 }
}
驾车线路规划:
第一步,创建驾车线路规划检索实例;
mSearch = RoutePlanSearch.newInstance();
第二步,创建驾车线路规划检索监听者;
OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() { public void onGetWalkingRouteResult(WalkingRouteResult result) { //获取步行线路规划结果 } public void onGetTransitRouteResult(TransitRouteResult result) { //获取公交换乘路径规划结果 } public void onGetDrivingRouteResult(DrivingRouteResult result) { //获取驾车线路规划结果 }
};
第三步,设置驾车线路规划检索监听者;
mSearch.setOnGetRoutePlanResultListener(listener);
第四步,准备检索起、终点信息;
PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "龙泽");
PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "西单");
第五步,发起驾车线路规划检索;
mSearch.drivingSearch((new DrivingRoutePlanOption()) .from(stNode) .to(enNode));
第六步,释放检索实例;
mSearch.destory();
步行线路规划:
步行线路规划的方式与驾车线路规划方式类似,在此不再赘述。
百度地图----检索功能的使用相关推荐
- Android百度地图测距功能
临近春节假期,业务开发进入收尾.空闲时间做的技术储备: 百度地图测距 为什么做这个技术储备,1 年尾有时间 2 我们现有的地图业务基于百度地图 3 这个功能竞品某壳等没有但是很实用 个人在看房时候经常 ...
- 使用百度地图定位功能第一次成功,第二次开始返回505错误码
使用百度地图定位功能第一次成功,第二次开始返回505错误码 505错误码的意思是AK错误,申请AK的时候要严格按照官网的教程 http://lbsyun.baidu.com/index.php?tit ...
- iOS--百度地图相关功能的实现
###一.配置百度地图SDK ####1. 申请密钥 进入应用管理平台,点击创建应用然后点击提交 密钥就申请成功了!! 在左侧的查看应用里面,就可以看到刚刚申请好的密钥. ####2. 下载百度地图S ...
- 百度地图检索以及路径规划
代码地址如下: http://www.demodashi.com/demo/11030.html 一.准备工作 需要集成百度地图SDK 需要申请百度地图AppKey 本例子实现了POI检索以及详情检索 ...
- Android之运用百度地图检索地点
Android之百度地图的更加深入学习 之前的文章我是主要先介绍获取用户的准确经纬度.现在我讲讲述学习百度地图更加深入学习-----根据自己想查找的地点来确定位置. 首先基本工作我们要完成,需要百度S ...
- 百度地图 测距功能 DistanceTool 在不同浏览器下标注不一致的解决办法,打开新地图测距不生效的解决办法
1. 在项目中用到百度地图的测距功能,在主页面的地图中用没问题,如果从主页的地图跳转到详情页的地图,在返回到主页,打开地图的测距功能,测距一直不显示.下面是解决办法 将测距功能的工具类函数下载到本地, ...
- Flutter 混合开发 - 03 百度地图定位功能 ios 篇
本节目标 创建 ios flutter 插件流程 集成百度定位功能 视频 https://www.bilibili.com/video/BV1HT4y1L73i/ 代码 https://github. ...
- android 百度地图3.0定位,百度地图定位功能实现v3_0_0
对于初学者来说,首先得先注意,不同的jar版本,方法也不同,之前不知道,纠结了很久 xml布局 android:layout_width="match_parent" androi ...
- 百度地图检索周围小吃添加大头针
效果图: 代码: 1.导入头文件 #import <BaiduMapAPI_Search/BMKPoiSearch.h> 2.设置代理 <BMKPoiSearchDelegate.h ...
最新文章
- 抢鲜体验:十一大行业 demo 全新上线!
- kotlin学习笔记——扩展函数(anko)和网络请求
- 2018-2019-1 20189213《Linux内核原理与分析》第四周作业
- 设计模式笔记二十四:模板模式
- (39)FPGA按键设计(第8天)
- 理想汽车10月份新增12家直营交付中心 蔚来第1000座充电站上线
- mysql-server rpm_Mysql rpm包安装
- 查看svn的版本(转载)
- c语言return后面有没有分号,为什么末尾加return 0;}反而不能通过?(符号英文半角,分号没漏)...
- 泰坦以太(以太流论)第五稿 titan_ysl 2020.02.04
- 如何优化Web服务器以实现高吞吐量和低延迟
- 使jira支持reopen率的统计
- Linux环境下无盘工作站的架设和实现一(转)
- 医院预约挂号系统(Java+SSM+MySQL+Maven)
- 飞利浦Georg Jensen联名系列真无线耳机JT60重磅上市
- 复制的eclipse常用快捷键 和 设计模式理解方式
- OpenCV读取、保存视频
- 测试光流传感器速度特性
- JVM规范(四)Frames
- 工作时间如何安排:集中注意力的方法
热门文章
- MySQL中, in和or 会走索引吗
- 综述:自然语言处理中深度学习应用综述
- #274. 纸张缩放
- 原生android 定制,定制安卓和原生Android到底有哪些不同之处?
- 程序猿啊你闷骚又迷人
- 计算机无法访问dota服务器,如何解决Win10专业版玩dota2无法与任何服务器建立连接...
- Mn3O4六边形纳米晶体/纳米二氧化锰/纳米氢氧化镍正极极片氧化物-瑞禧
- oracle中nvl、nvl2、nvlliff函数的使用方法
- 华为阿里员工跳槽到微软后被集体抵制:请停止你的“奋斗逼”行为
- python中冒号(:)的作用