高德地图-搜索服务-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类。
}

显示效果如图所示:

时间: 2024-10-13 01:56:50

高德地图-搜索服务-POI搜索的相关文章

【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索

摘要: 地图服务,大家能想到哪些?POI搜素,输入提示,地址解析,公交导航,驾车导航,步行导航,道路查询(交叉口),行政区划等等.如果说覆盖物Marker是地图的骨骼,那么服务,就是地图的气血.有个各种各样的地图服务,我们的地图应用才能变得有血有肉,活灵活现. 第四篇拆成了几个要点,本篇主要讲搜索服务.包括周边搜索,关键词搜索,范围搜索,搜索提示(自动完成,输入提示),行政区域,交叉路口,检索自有数据(云图). demo:http://zhaoziang.com/amap/zero_4_1.ht

Unity与Android交互-Unity接入高德地图实现定位以及搜索周边的功能(使用Android Studio)详细操作

刚进公司给安排的任务就是Unity接入高德地图,算是踩了不少坑总算做出来了,抽点时间写个博客记录一下 废话不多说 先上效果图 获取定位并根据手机朝向显示周边信息            使用的Unity版本为5.5,Androad Studio 2.3.1 接下来开始讲具体操作 首先是Androad Studio的基本配置 1.创建工程,空白的就行,反正也用不到界面布局 等待创建完成 2.新建库模块: 切换到Project视图 右击你的项目 新建一个库模块-用来负责与Unity交互 当然你也可以不

百度地图、高德地图的定位,搜索,模糊搜索-1

//这一段时间因为要做O2O商城,中间要用到地图的定位搜索功能,花了几天看了,其实大致的看文档的话很好解决得,主要说说者集体那遇到的麻烦吧其中定位用到了 #import <BaiduMapAPI_Search/BMKSearchComponent.h> 开启定位 //开启定位 - (void)startLocationSuccess:(SuccessBlock)success Error:(BMKErrorBlock)error { if (success) { self.successBlo

百度地图API和高德地图API资料集锦

[高德地图API]从零开始学高德JS API(五)路线规划--驾车|公交|步行 [高德地图API]从零开始学高德JS API(四)搜索服务--POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索 [高德地图API]从零开始学高德JS API(三)覆盖物--标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物 [高德地图API]从零开始学高德JS API(二)地图控件与插件--测距.圆形编辑器.鼠标工具.地图类型切换.鹰眼鱼骨 [高德地图API]从零开始学高德JS API

高德地图兴趣点搜索(PoiSearch)小例子

目前我们项目上在做一个兴趣点搜索的小功能(搜索附近的电影院),用的是高德地图,为了便于记忆,就写下来.功能及页面都很简单,就是在输入框中输入内容,然后就会搜索出附近相关的位置,然后在ListView中展示出来.项目中使用的是分页加载,为了写文章方便,就把加载去掉了,直接用ListView展示出来. ----------------------------------界面布局--------------------------------------- <?xml version="1.0&

[android] 百度地图开发 (二).定位城市位置和城市POI搜索

一. 百度地图城市定位和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了如何申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述如何定位城市位置.定位自己的位置和进行城市兴趣点POI(Point of Interest)搜索.那么如何在百度地图上定位某一个位置呢?       通过类GeoPoint可以定义经纬度,它存放着纬度值和经度值,通过getLastKnownLocation()方法可以获取Location对象,再定位经纬度设置其为地图中心即可显示当

iOS第三方地图-百度地图常用功能使用(POI搜索,地理正反编码,定位,添加标注)

百度地图官网: http://developer.baidu.com/map/index.php?title=iossdk 百度地图集成 1.引入相关包 注:不需要使用地图功能的可以不用boundle包,模拟器使用的framework和真机不一样具体看官网 2.info.plist中 3.在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC. 4.将一个文件设置为.mm 百度地图使用 1.AppDelegate中注册 _mapManager

[android] 百度地图开发 (两).所在地的城市定位和城市POI搜索

一个. 百度地图城市位置和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了怎样申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述怎样定位城市位置.定位自己的位置和进行城市兴趣点POI(Point of Interest)搜索.那么怎样在百度地图上定位某一个位置呢?       通过类GeoPoint能够定义经纬度,它存放着纬度值和经度值,通过getLastKnownLocation()方法能够获取Location对象,再定位经纬度设置其为地图中心就可以显

高德地图车机版API演示程序

高德地图车机版API演示程序 做车载的应该和这个程序打交道打的比较多吧,这里是我今天写的一个实现了他的API的一个演示程序 首先我们来看下他的官网. http://lbs.amap.com/api/amapauto/#id004 相对于其他的api来说,这个api已经相对挺完善的,如果想使用这个车机版地图,你需要去下载一些资源包,放在对应的位置然后联网激活,这些就不详细的说明了 概述 高德地图车机版(amap auto)第三方调用API是为整车厂.前后装主机厂.系统方案商.开发者等,提供的在自己