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

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
更新时间:2020-06-23
poi检索简介

poi(point of interest),即“兴趣点”。在地理信息系统中,一个poi可以是一栋房子、一个景点、一个邮筒或者一个公交站等。

百度地图sdk提供三种类型的poi检索:城市内检索、周边检索和区域检索(即矩形区域检索)。下面分别对三种poi检索服务的使用方法作说明。

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

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

示例如下:

1创建poi检索实例
mpoisearch = poisearch.newinstance();
2创建poi检索监听器
ongetpoisearchresultlistener listener = new ongetpoisearchresultlistener() {
    @override
    public void ongetpoiresult(poiresult poiresult) {
    }
    @override
    public void ongetpoidetailresult(poidetailsearchresult poidetailsearchresult) {
    }
    @override
    public void ongetpoiindoorresult(poiindoorresult poiindoorresult) {
    }
    //废弃
    @override
    public void ongetpoidetailresult(poidetailresult poidetailresult) {
    }
};
3设置检索监听器
mpoisearch.setongetpoisearchresultlistener(listener);
4设置poicitysearchoption,发起检索请求
/**
 *  poiciysearchoption 设置检索属性
 *  city 检索城市
 *  keyword 检索内容关键字
 *  pagenum 分页页码
 */
mpoisearch.searchincity(new poicitysearchoption()
        .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方法获取。

public list getsuggestcitylist()


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

效果如图:
poi详情

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

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

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

ongetpoisearchresultlistener listener = new ongetpoisearchresultlistener() {
    ......
    @override
    public void ongetpoidetailresult(poidetailsearchresult poidetailsearchresult) {
        
    }
};

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


poi周边检索

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

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

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

/**
 * 设置矩形检索区域
 */
latlngbounds searchbounds = new latlngbounds.builder()
        .include(new latlng( 39.92235, 116.380338 ))
        .include(new latlng( 39.947246, 116.414977))
        .build();
/**
 * 在searchbounds区域内检索餐厅
 */
mpoisearch.searchinbound(new poiboundsearchoption()
        .bound(searchbounds)
        .keyword("餐厅"));
效果如图:
检索结果覆盖物

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

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

效果如图:

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

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消

"));
网站地图