高德地图-搜索服务-POI搜索
高德地图-搜索服务-POI搜索
之前公司项目收货地址仿饿了么的收货地址,结果发现自己实现的关键字搜索和周边搜索,搜索到的poi列表跟饿了么的并不完全一样,后来考虑了下,应该是搜索的范围、类型之类的设置的不一样。后来搜索了下,也的确是这样,,现在记录下来,留给自己也留给大家。
高德地图 Android SDK 提供了千万级别的POI(Point Of Interesting,兴趣点)的搜索。
目前支持关键字搜索、周边搜索、指定区域搜索的同步、异步方法。搜索返回 POI 的基本信息,如POI ID,POI 名称、类型、经纬度、地址等。
关键字搜索
通过 PoiSearch.Query(String query, String ctgr, String city) 设置搜索条件。参数“query”为搜索的关键字,“ctgr”为搜索类型(类型参照表从相关下载处获取)、“city”为搜索城市,是必填参数,关键字和类型至少输入一个。
设置搜索条件,发送请求
query = new PoiSearch.Query(keyWord, "", cityCode); // keyWord表示搜索字符串, //第二个参数表示POI搜索类型,二者选填其一, //POI搜索类型共分为以下20种:汽车服务|汽车销售| //汽车维修|摩托车服务|餐饮服务|购物服务|生活服务|体育休闲服务|医疗保健服务| //住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|交通设施服务| //金融保险服务|公司企业|道路附属设施|地名地址信息|公共设施 //cityCode表示POI搜索区域的编码,是必须设置参数 query.setPageSize(10);// 设置每页最多返回多少条poiitem query.setPageNum(currentPage);//设置查询页码 PoiSearch poiSearch = new PoiSearch(this, query);//初始化poiSearch对象 poiSearch.setOnPoiSearchListener(this);//设置回调数据的监听器 poiSearch.searchPOIAsyn();//开始搜索
通过回调接口接受并解析返回的结果。
public void onPoiSearched(PoiResult result, int rCode) {
//可以在回调中解析result,获取POI信息
//result.getPois()可以获取到PoiItem列表,Poi详细信息可参考PoiItem类
//若当前城市查询不到所需Poi信息,可以通过result.getSearchSuggestionCitys()获取当前Poi搜索的建议城市
//如果搜索关键字明显为误输入,则可通过result.getSearchSuggestionKeywords()方法得到搜索关键词建议
//返回结果成功或者失败的响应码。0为成功,其他为失败(详细信息参见网站开发指南-错误码对照表)
}
显示效果如图所示:
周边搜索
使用 PoiSearch.searchPOIAsyn() 搜索 POI。使用 PoiSearch.setOnPoiSearchListener() 方法设置监听器,在 PoiSearch.OnPoiSearchListener 接口回调方法 onPoiSearched(PoiResult poiResult,int rCode)中处理返回结果。当指定搜索城市时,若没有返回 POI 结果,则会返回包含关键字的建议城市名称。当关键字搜索无结果时,则会返回搜索建议关键字。
设置搜索条件,发送请求
query = new PoiSearch.Query(keyWord, "汽车维修|餐饮服务", cityCode);
// keyWord表示搜索字符串,第二个参数表示POI搜索类型,默认为:生活服务、餐饮服务、商务住宅
//共分为以下20种:汽车服务|汽车销售|
//汽车维修|摩托车服务|餐饮服务|购物服务|生活服务|体育休闲服务|医疗保健服务|
//住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|交通设施服务|
//金融保险服务|公司企业|道路附属设施|地名地址信息|公共设施
//cityCode表示POI搜索区域,(这里可以传空字符串,空字符串代表全国在全国范围内进行搜索)
query.setPageSize(10);// 设置每页最多返回多少条poiitem
query.setPageNum(currentPage);//设置查第一页
PoiSearch poiSearch = new PoiSearch(this,query);
poiSearch.setBound(new SearchBound(new LatLonPoint(locationMarker.getPosition().latitude,
locationMarker.getPosition().longitude), 1000));//设置周边搜索的中心点以及区域
poiSearch.setOnPoiSearchListener(this);//设置数据返回的监听器
poiSearch.searchPoiAsyn();//开始搜索
通过回调接口获取数据
public void onPoiSearched(PoiResult result, int rCode) {
//在回调函数中解析result获取POI信息
//result.getPois()可以获取到PoiItem列表,Poi详细信息可参考PoiItem类
//若当前城市查询不到所需Poi信息,可以通过result.getSearchSuggestionCitys()获取当前Poi搜索的建议城市
//如果搜索关键字明显为误输入,则可通过result.getSearchSuggestionKeywords()方法得到搜索关键词建议
//返回结果成功或者失败的响应码。0为成功,其他为失败(详细信息参见网站开发指南-错误码对照表)
}
显示效果如图所示:
区域搜索
在周边搜索的基础上,增加了矩形限定区域。根据搜索矩形区域左下角和右上角的顶点坐标,使用 PoiSearch.SearchBound(LatLonPoint lowerLeft, LatLonPoint upperRight) 设置搜索范围。
输入提示搜索
在输入关键字(至少两个字符)时,可以使用Inputtips类的 Inputtips.InputtipsListener 接口监听输入信息,并使用 requestInputtips(String keyword, String city) 发送提示请求。
注:提示中会出现相同的关键字,但是这些关键字所在区域不同,使用时可以通过 tipList.get(i).getDistrict() 获得区域,也可以在提示时在关键字后加上区域。
例如用户输入“高德”,输入框下方的列表会显示包含关键字字段的输入提示信息。
显示效果如图所示:
示例代码如下:
// 发送输入提示请求
// newText表示提示关键字,第二个参数默认代表全国,也可以为城市区号
inputTips.requestInputtips(newText, "");
通过回调接口获取数据
public void onGetInputtips(List<Tip> inputTips, int rcode){
//在回调函数中解析inputTips,获取输入提示返回的信息
//Tip类中包含Poi的Adcode、District、Name信息
//返回结果成功或者失败的响应码。0为成功,其他为失败(详细信息参见网站开发指南-错误码对照表)
}
行政区划搜索
根据县(区)级行政区划名称查询其下级区划的详细信息,如:中心点坐标、编码等等。
DistrictSearch search = new DistrictSearch(mContext);
DistrictSearchQuery query = new DistrictSearchQuery();
query.setKeywords("keywords");//传入关键字
query.setKeywordsLevel(DistrictSearchQuery.KEYWORDS_CITY);
query.setShowBoundary(true);//是否返回边界值
search.setQuery(query);
search.setOnDistrictSearchListener(this);//绑定监听器
search.searchDistrictAnsy();//开始搜索
通过回调接口获取数据
public void onDistrictSearched(DistrictResult districtResult) {
//在回调函数中解析districtResult获取行政区划信息
//在districtResult.getAMapException().getErrorCode()=0时调用districtResult.getDistrict()方法
//获取查询行政区的结果,详细信息可以参考DistrictItem类。
}
显示效果如图所示:
高德地图-搜索服务-POI搜索的更多相关文章
- 【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索
原文:[高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索 摘要:地图服务,大家能想到哪些?POI搜素,输入提示,地址解析,公 ...
- 【高德地图API】从零開始学高德JS API(四)搜索服务——POI搜索|自己主动完毕|输入提示|行政区域|交叉路口|自有数据检索
地图服务.大家能想到哪些?POI搜素,输入提示,地址解析,公交导航,驾车导航,步行导航,道路查询(交叉口),行政区划等等.假设说覆盖物Marker是地图的骨骼,那么服务,就是地图的气血. 有个各种各样 ...
- Unity与Android交互-Unity接入高德地图实现定位以及搜索周边的功能(使用Android Studio)详细操作
刚进公司给安排的任务就是Unity接入高德地图,算是踩了不少坑总算做出来了,抽点时间写个博客记录一下 废话不多说 先上效果图 获取定位并根据手机朝向显示周边信息 使用的Unity ...
- 高德地图&兴趣点(poi)
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- iOS 利用高德地图WMS服务
Demo: https://github.com/xushiyou23/AMapTesting 转: 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net ...
- android开发对应高德地图定位服务进度一
进行android的高德地图开发首先需要进入高德地图的控制台进行注册登录.之后创建新的应用并且绑定软件得到相应的key. 这里面需要找到自己软件对应的多个SHA1.这里有发布版和调试版,以及对应的软件 ...
- iOS高德地图SDK定位和搜索附近信息的具体使用
1.显示地图.定位.显示当前位置. 导入你需要的功能的头文件,申明全局变量,代理方法等等. 初始化地图,在控制器即将显示额时候打开定位和跟踪用户,这里对参数不懂的话康忙进去都有注释. 对了.i ...
- 百度地图API和高德地图API资料集锦
[高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行 [高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自 ...
- [android] 百度地图开发 (两).所在地的城市定位和城市POI搜索
一个. 百度地图城市位置和POI搜索知识 上一篇文章"百度地图开发(一)"中讲述了怎样申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述怎样定位城市位置.定 ...
随机推荐
- Lambda表达式详解
前言 1.天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西. 2.夸夸lambda吧:简化了匿名委托的使用,让你让代码更加简洁,优雅.据说它是微软自c#1.0后新增的最重要的功能之一 ...
- JAVA正则表达式中如何匹配反斜杠 \
有时候我们需要匹配反斜杠,你可能会把对应的正则表达式写成 "\\" 然后可能会有如下输出: Exception in thread "main" java.ut ...
- Spring AOP详解
一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址:http://www.cnbl ...
- mac搭建nginx与php
第一步:关闭Apache及开机启动 要使用nginx,最好停用mac中自带的Apache.停用很简单: sudo launchctl unload -w /System/Library/LaunchD ...
- 【ORACLE】 表空间信息
Linux 查看磁盘空间命令 格式: df -hl 显示格式为: 文件系统 容量 已用 可用 已用% 挂载点 [root@localhost opt]# dfFilesystem 1K-blo ...
- 转载:Chrome调试折腾记_(1)调试控制中心快捷键详解!!!
转载:http://blog.csdn.net/crper/article/details/48098625 大多浏览器的调试功能的启用快捷键都一致…按下F12;还是熟悉的味道; 或者直接 Ctrl ...
- Salesforce学习资料
官方文档下载网址:https://developer.salesforce.com/docs 关于Salesforce的所有官方文档都在以上的地址之中,可以进行在线预览和下载 推荐新手学习以下几本文档 ...
- 输入/输出系统的四种不同工作方式对CPU利用率比较
程序控制工作方式:输入/输出完全由CPU控制,整个I/O过程中CPU必须等待其完成,因此对CPU的能力限制很大,利用率较低 程序中断工作方式:CPU不再定期查询I/O系统状态,而是当需要I/O处理时再 ...
- 解决IE6/IE7/IE8不支持before,after问题
对从事web开发的朋友来讲,低版本的IE永远是一个痛点,不支持最新技术(如css3,html5). 在现在web开发中使用图标字体已经很广泛,如Font Awesome,Bootstrap等,字体图片 ...
- strcpy函数在VS2015无法使用的问题
一:原因:一般认为是vs准备弃用strcpy的,安全性较低,所以微软提供了strcpy_s来代替 然而,strcpy_s并没有strcpy好用,我们要想继续在VS2015中使用strcpy该怎么办 呢 ...