高德地图-搜索服务-POI搜索

摘要:
高德地图-搜索服务-POI之前搜索了该公司项目的发货地址,发现他意识到的关键词搜索和周围搜索与该公司项目并不完全相同。后来,他认为搜索的范围和类型应该有所不同。关键词搜索搜索区域搜索Godmap Android SDK提供1000万级POI搜索。0表示成功,其他表示失败}显示效果如图所示:PoiSearch用于周边搜索SearchPOIAsyn()搜索POI。指定搜索城市时,如果未返回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为成功,其他为失败(详细信息参见网站开发指南-错误码对照表)
}

显示效果如图所示:

高德地图-搜索服务-POI搜索第1张

周边搜索

使用 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为成功,其他为失败(详细信息参见网站开发指南-错误码对照表)
}

显示效果如图所示:

image

 高德地图-搜索服务-POI搜索第2张

区域搜索

在周边搜索的基础上,增加了矩形限定区域。根据搜索矩形区域左下角和右上角的顶点坐标,使用 PoiSearch.SearchBound(LatLonPoint lowerLeft, LatLonPoint upperRight) 设置搜索范围。

输入提示搜索

在输入关键字(至少两个字符)时,可以使用Inputtips类的 Inputtips.InputtipsListener 接口监听输入信息,并使用 requestInputtips(String keyword, String city) 发送提示请求。

注:提示中会出现相同的关键字,但是这些关键字所在区域不同,使用时可以通过 tipList.get(i).getDistrict() 获得区域,也可以在提示时在关键字后加上区域。

例如用户输入“高德”,输入框下方的列表会显示包含关键字字段的输入提示信息。

显示效果如图所示:

高德地图-搜索服务-POI搜索第3张

示例代码如下:

image

image

// 发送输入提示请求 
// 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搜索第4张

 
image

免责声明:文章转载自《高德地图-搜索服务-POI搜索》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux等待队列原理与实现eCharts 数据转换json下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mapbox 接入高德矢量地图实战

Mapbox 作为现如今比较流行的地图框架为我们提供了漂亮的个性化地图,在平常的使用过程中可以方便的接入高德/谷歌等矢量切片地图。由于Mapbox地图数据来源于Open Street Map等国外厂商,中国地图POI/道路等信息都不全,造成在实际项目中使用很不精细。对比国内互联网地图厂商,百度和高德都提供了自有格式的矢量地图,如何解析其数据,再将数据PBF...

poi解析office文档内容的工具类

第一步引入依赖 <!--xls--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId>...

CVE20211732 LPE漏洞分析

概述   CVE-2021-1732是一个发生在windows内核win32kfull模块的LPE漏洞,并且由于创建窗口时调用win32kfull!xxxCreateWindowEx过程中会进行用户模式回调(KeUserModeCallback),从而给了用户态进程利用的机会。   该漏洞由安恒信息在2020年12月在野外攻击样本中发现,在2021年2月份...

Apache POI Java读取100万行Excel性能优化:split vs indexOf+subString,谁性能好

使用Apache POI eventmodel实现一个Excel流式读取类,目标是100万行,每行46列,文件大小152MB的Excel文件能在20s读取并处理完。一开始实现的程序需要260s,离目标差太远了,使用jvisualvm分析各方法执行时间,结果如下: 可以看到,程序中的splitLine和getRowNum方法消耗了大量时间。这两个方法都特别...

Java中使用poi导入、导出Excel

来自:http://blog.csdn.net/jerehedu/article/details/45195359 一、介绍    当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样在我们实际的开发中,很多时候需要实现导入、...

poi的各种单元格样式以及一些常用的配置

之前我做过一个poi到处excel数据的博客,但是,后面使用起来发现,导出的数据单元格样式都不对。 很多没有居中对齐,很多单元格的格式不对,还有就是单元格的大小不对,导致数据显示异常,虽然功能可以使用但不是很完美。 这里找到网上一个比较全面的简单设置。这么做一个记录,之后就是参考这个单元格的样式配置自己需要的格式。 官方给出的api太难了,还是看中文的吧。...