百度地图—-检索功能的使用

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();

步行线路规划:
步行线路规划的方式与驾车线路规划方式类似,在此不再赘述。

百度地图----检索功能的使用相关推荐

  1. Android百度地图测距功能

    临近春节假期,业务开发进入收尾.空闲时间做的技术储备: 百度地图测距 为什么做这个技术储备,1 年尾有时间 2 我们现有的地图业务基于百度地图 3 这个功能竞品某壳等没有但是很实用 个人在看房时候经常 ...

  2. 使用百度地图定位功能第一次成功,第二次开始返回505错误码

    使用百度地图定位功能第一次成功,第二次开始返回505错误码 505错误码的意思是AK错误,申请AK的时候要严格按照官网的教程 http://lbsyun.baidu.com/index.php?tit ...

  3. iOS--百度地图相关功能的实现

    ###一.配置百度地图SDK ####1. 申请密钥 进入应用管理平台,点击创建应用然后点击提交 密钥就申请成功了!! 在左侧的查看应用里面,就可以看到刚刚申请好的密钥. ####2. 下载百度地图S ...

  4. 百度地图检索以及路径规划

    代码地址如下: http://www.demodashi.com/demo/11030.html 一.准备工作 需要集成百度地图SDK 需要申请百度地图AppKey 本例子实现了POI检索以及详情检索 ...

  5. Android之运用百度地图检索地点

    Android之百度地图的更加深入学习 之前的文章我是主要先介绍获取用户的准确经纬度.现在我讲讲述学习百度地图更加深入学习-----根据自己想查找的地点来确定位置. 首先基本工作我们要完成,需要百度S ...

  6. 百度地图 测距功能 DistanceTool 在不同浏览器下标注不一致的解决办法,打开新地图测距不生效的解决办法

    1. 在项目中用到百度地图的测距功能,在主页面的地图中用没问题,如果从主页的地图跳转到详情页的地图,在返回到主页,打开地图的测距功能,测距一直不显示.下面是解决办法 将测距功能的工具类函数下载到本地, ...

  7. Flutter 混合开发 - 03 百度地图定位功能 ios 篇

    本节目标 创建 ios flutter 插件流程 集成百度定位功能 视频 https://www.bilibili.com/video/BV1HT4y1L73i/ 代码 https://github. ...

  8. android 百度地图3.0定位,百度地图定位功能实现v3_0_0

    对于初学者来说,首先得先注意,不同的jar版本,方法也不同,之前不知道,纠结了很久 xml布局 android:layout_width="match_parent" androi ...

  9. 百度地图检索周围小吃添加大头针

    效果图: 代码: 1.导入头文件 #import <BaiduMapAPI_Search/BMKPoiSearch.h> 2.设置代理 <BMKPoiSearchDelegate.h ...

最新文章

  1. 抢鲜体验:十一大行业 demo 全新上线!
  2. kotlin学习笔记——扩展函数(anko)和网络请求
  3. 2018-2019-1 20189213《Linux内核原理与分析》第四周作业
  4. 设计模式笔记二十四:模板模式
  5. (39)FPGA按键设计(第8天)
  6. 理想汽车10月份新增12家直营交付中心 蔚来第1000座充电站上线
  7. mysql-server rpm_Mysql rpm包安装
  8. 查看svn的版本(转载)
  9. c语言return后面有没有分号,为什么末尾加return 0;}反而不能通过?(符号英文半角,分号没漏)...
  10. 泰坦以太(以太流论)第五稿 titan_ysl 2020.02.04
  11. 如何优化Web服务器以实现高吞吐量和低延迟
  12. 使jira支持reopen率的统计
  13. Linux环境下无盘工作站的架设和实现一(转)
  14. 医院预约挂号系统(Java+SSM+MySQL+Maven)
  15. 飞利浦Georg Jensen联名系列真无线耳机JT60重磅上市
  16. 复制的eclipse常用快捷键 和 设计模式理解方式
  17. OpenCV读取、保存视频
  18. 测试光流传感器速度特性
  19. JVM规范(四)Frames
  20. 工作时间如何安排:集中注意力的方法

热门文章

  1. MySQL中, in和or 会走索引吗
  2. 综述:自然语言处理中深度学习应用综述
  3. #274. 纸张缩放
  4. 原生android 定制,定制安卓和原生Android到底有哪些不同之处?
  5. 程序猿啊你闷骚又迷人
  6. 计算机无法访问dota服务器,如何解决Win10专业版玩dota2无法与任何服务器建立连接...
  7. Mn3O4六边形纳米晶体/纳米二氧化锰/纳米氢氧化镍正极极片氧化物-瑞禧
  8. oracle中nvl、nvl2、nvlliff函数的使用方法
  9. 华为阿里员工跳槽到微软后被集体抵制:请停止你的“奋斗逼”行为
  10. python中冒号(:)的作用