android地图sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
poi检索
下载开发文档
poi检索简介

poi(point of interest),即“兴趣点”。在地理信息系统中,一个poi可以是一栋房子、一个景点、一个邮筒或者一个公交站等。
百度地图sdk提供三种类型的poi检索:城市内检索、周边检索和区域检索(即矩形区域检索)。下面分别对三种poi检索服务的使用方法作说明。

poi城市内检索(关键字检索)

关键字检索适用于在某个城市内搜索某个名称相关的poi,例如:查找“北京市”的“小吃”。
示例如下:

1. 创建poi检索实例
mpoisearch =poisearch.newinstance();
2. 创建poi检索监听器
ongetpoisearchresultlistener listener =newongetpoisearchresultlistener(){
@override
publicvoidongetpoiresult(poiresult poiresult){
}
@override
publicvoidongetpoidetailresult(poidetailsearchresult poidetailsearchresult){
}
@override
publicvoidongetpoiindoorresult(poiindoorresult poiindoorresult){
}
//废弃
@override
publicvoidongetpoidetailresult(poidetailresult poidetailresult){
}
};
3. 设置检索监听器
mpoisearch.setongetpoisearchresultlistener(listener);
4. 设置poicitysearchoption,发起检索请求
/**
* poiciysearchoption 设置检索属性
* city 检索城市
* keyword 检索内容关键字
* pagenum 分页页码
*/
mpoisearch.searchincity(newpoicitysearchoption()
.city("北京")//必填
.keyword("美食")//必填
.pagenum(0));
5. 释放检索实例
mpoisearch.destroy();
poicitysearchoption属性详解

除了示例代码中描述的必填的字段,其他常用字段的介绍如下表所示。

pagenum分页编号,默认返回第0页结果
pagecapacity设置每页容量,默认为10条结果
tag设置检索分类,如“美食”
scope值为1 或 空,返回基本信息
值为2,返回poi详细信息
citylimit是否限制检索区域为城市内
poifilter设置检索过滤条件,scope为2时有效
isextendadcode是否召回行政区划编码,默认为true

注:您可以在web服务api页面查看poisearch请求参数和返回参数的详细内容。

注意事项:

1. poi检索时,city是必填项。
2. 当输入的关键字在该city检索无结果,而在其他城市检索到时,sdk会返回一个cityinfo对象列表,该列表可以通过poiresult类getsuggestcitylist方法获取。

publiclist<cityinfo>getsuggestcitylist()

cityinfo包含城市名和该城市内检索结果的数量等信息。开发者可以通过该列表进行二次请求。
3. 开发者可以通过设置poicitysearchoption对象citylimit字段为false(默认为true)来扩大检索范围,当city内检索无结果时,会将检索范围扩大至全国。
效果如图:

poi详情

开发者可以针对poicitysearch检索到的结果进行进一步的检索以获取详细信息。
示例如下:
发起检索:

//poiinfo 检索到的第一条信息
poiinfo poi = mpoiresult.getallpoi().get(0);
//通过第一条检索信息对应的uid发起详细信息检索
mpoisearch.searchpoidetail((newpoidetailsearchoption())
.poiuids(poi.uid));// uid的集合,最多可以传入10个uid,多个uid之间用英文逗号分隔。

在ongetpoidetailresult(poidetailsearchresult poidetailsearchresult)回调方法中处理。

ongetpoisearchresultlistener listener =newongetpoisearchresultlistener(){
......
@override
publicvoidongetpoidetailresult(poidetailsearchresult poidetailsearchresult){
}
};

注意:自v5.2.0起,poi详情检索的回调方法ongetpoidetailresult(poidetailresult poidetailresult)方法已废弃,请使用ongetpoidetailresult(poidetailsearchresult poidetailsearchresult)方法代替,在检索时检索参数必须使用poiuids(poi.uid)。

poi周边检索

周边检索是在一个圆形范围内的poi检索,适用于以某个位置为中心点,自定义搜索半径,搜索某个位置附近的poi。
设置searchoption,发起周边检索请求示例如下:

/**
* 以天安门为中心,搜索半径100米以内的餐厅
*/
mpoisearch.searchnearby(newpoinearbysearchoption()
.location(newlatlng(39.915446,116.403869))
.radius(100);
//支持多个关键字并集检索,不同关键字间以$符号分隔,最多支持10个关键字检索。如:”银行$酒店”
.keyword("餐厅")
.pagenum(0));

效果如图:

poi区域检索(矩形区域检索)

poi区域检索,即“在由开发者指定的西南角和东北角组成的矩形区域内的poi检索”。
设置poiboundssearchoptions,发起检索请求示例如下:

/**
* 设置矩形检索区域
*/
latlngbounds searchbounds =newlatlngbounds.builder()
.include(newlatlng(39.92235,116.380338))
.include(newlatlng(39.947246,116.414977))
.build();
/**
* 在searchbounds区域内检索餐厅
*/
mpoisearch.searchinbound(newpoiboundsearchoption()
.bound(searchbounds)
.keyword("餐厅"));

效果如图:

检索结果覆盖物

开发者可以使用自v3.6.0起开源的覆盖物源代码来完成poi检索结果的展示。
示例如下:

@override
publicvoidongetpoiresult(poiresult poiresult){
if(poiresult.error==searchresult.errorno.no_error){
mbaidumap.clear();
//创建poioverlay对象
poioverlay poioverlay =newpoioverlay(mbaidumap);
//设置poi检索数据
poioverlay.setdata(poiresult);
//将poioverlay添加至地图并缩放至合适级别
poioverlay.addtomap();
poioverlay.zoomtospan();
}
}

效果如图:

注意:android 7.5.2 起新增adcode字段,isextendadcode字段设为true后,可以在返回结果中通过adcode字段查询行政区划编码。

上一篇

周边运力

下一篇

地点输入提示检索

本篇文章对您是否有帮助?

网站地图