高德地图-搜索服务-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搜索的更多相关文章

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

    原文:[高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索 摘要:地图服务,大家能想到哪些?POI搜素,输入提示,地址解析,公 ...

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

    地图服务.大家能想到哪些?POI搜素,输入提示,地址解析,公交导航,驾车导航,步行导航,道路查询(交叉口),行政区划等等.假设说覆盖物Marker是地图的骨骼,那么服务,就是地图的气血. 有个各种各样 ...

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

    刚进公司给安排的任务就是Unity接入高德地图,算是踩了不少坑总算做出来了,抽点时间写个博客记录一下 废话不多说 先上效果图 获取定位并根据手机朝向显示周边信息            使用的Unity ...

  4. 高德地图&兴趣点(poi)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  5. iOS 利用高德地图WMS服务

    Demo:  https://github.com/xushiyou23/AMapTesting 转: 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net ...

  6. android开发对应高德地图定位服务进度一

    进行android的高德地图开发首先需要进入高德地图的控制台进行注册登录.之后创建新的应用并且绑定软件得到相应的key. 这里面需要找到自己软件对应的多个SHA1.这里有发布版和调试版,以及对应的软件 ...

  7. iOS高德地图SDK定位和搜索附近信息的具体使用

    1.显示地图.定位.显示当前位置. 导入你需要的功能的头文件,申明全局变量,代理方法等等.   初始化地图,在控制器即将显示额时候打开定位和跟踪用户,这里对参数不懂的话康忙进去都有注释.   对了.i ...

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

    [高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行   [高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自 ...

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

    一个. 百度地图城市位置和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了怎样申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述怎样定位城市位置.定 ...

随机推荐

  1. Xcode playground markdown常用语法

    //: **Bold** *Italic* /*: # h1 ## h2 ### h3 #### h4 h5 h6 same as h3 --- --- --- * blank seperate li ...

  2. iOS Swift 数组 交换元素的两种方法

    swap(&arr[fromIndexPath.row], &arr[to.row]) (arr[fromIndexPath.row],arr[to.row]) = (arr[to.r ...

  3. SpringMvc相关配置的作用

    1. <!-- 配置 handlerAdapter--> <bean class="org.springframework.web.servlet.mvc.SimpleCo ...

  4. CodeSimth-.NetFrameworkDataProvider可能没有安装。解决方法

    原文地址:http://www.haogongju.net/art/2561889 1.下载System.Data.SQLite驱动:注意:根据自己的CPU选择是32位还是64位的驱动.建议选择4.0 ...

  5. [译]App Framework 2.1 (2)之 Get Involved

    App Framework  API 第二篇 原文在此:http://app-framework-software.intel.com/documentation.php#intro/involved ...

  6. Java技术体系图

    Java程序员高级特性              反射.泛型.注释符.自动装箱和拆箱.枚举类.可变              参数.可变返回类型.增强循环.静态导入        核心编程       ...

  7. mina通信 demo

    1,要用到4个jar 2,服务端 package mina.server; import java.io.IOException; import java.net.InetSocketAddress; ...

  8. BJITJobs : 北京IT圈高端职位招聘信息,成功率最高的高端求职渠道

    你有实力,但比你差的人都升了,你的师弟都年薪50万了,你还是找不到机会.为什么你离高端机会总是差一步呢?其实你离成功就差一次机会,一个适合你的高端职位的信息! 招聘网站不靠谱:三大网站都是低端职位为主 ...

  9. SSH整合,必出精品

    SSH:顾名思义(spring,struts2,hirbernate)  Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts是一个表示层框架,主要作用是界面展示 ...

  10. ECMAScript6 初步认识

    JavaScript由3部分组成,分别是:Dom,BOM和ECMAScript !核心(ECMAScript):由ECMA-262定义,提供核心语言功能:ECMAScript是属于国际标准化语言,所有 ...