(8)POI检索

百度地图SDK提供三种类型的POI检索:城市内检索、周边检索和区域检索(即矩形区域检索)

跟搜索有关的类

PoiSearch 它内部有几个方法

searchInCity(PoiCitySearchOptionoption)

城市内检索 V4.3.2版本后(包含V4.3.2版本),该方法要在Listener设置方法 setOnGetPoiSearchResultListener(OnGetPoiSearchResultListener) 之后执行,否则会在某些场景出现拿不到回调结果的情况

searchInBound(PoiBoundSearchOptionoption)

范围内检索 V4.3.2版本后(包含V4.3.2版本),该方法要在Listener设置方法 setOnGetPoiSearchResultListener(OnGetPoiSearchResultListener) 之后执行,否则会在某些场景出现拿不到回调结果的情况

searchNearby(PoiNearbySearchOptionoption)

周边检索 V4.3.2版本后(包含V4.3.2版本),该方法要在Listener设置方法setOnGetPoiSearchResultListener(OnGetPoiSearchResultListener)之后执行,否则会在某些场景出现拿不到回调结果的情况

booleansearchPoiIndoor(PoiIndoorOptionoption)

POI 室内检索 V4.3.2版本后(包含V4.3.2版本),该方法要在Listener设置方法 setOnGetPoiSearchResultListener(OnGetPoiSearchResultListener) 之后执行,否则会在某些场景出现拿不到回调结果的情况

经过上面四种检索之后

searchPoiDetail(PoiDetailSearchOptionoption)

POI 详情检索 V4.3.2版本后(包含V4.3.2版本),该方法要在Listener设置方法 setOnGetPoiSearchResultListener(OnGetPoiSearchResultListener) 之后执行,否则会在某些场景出现拿不到回调结果的情况

设置检索监听

@Override // 查询结果回调

public void onGetPoiResult(PoiResult poiResult) {

Log.e(TAG,"onGetPoiResult");

}

@Override //被onGetPoiDetailResult替代

public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {

Log.e(TAG,"onGetPoiDetailResult");

}

@Override //用于返回详细检索结果

public void onGetPoiDetailResult(PoiDetailSearchResult poiDetailSearchResult) {

Log.e(TAG,"onGetPoiDetailResult");

}

@Override //室内检索结果回调

public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {

Log.e(TAG,"onGetPoiIndoorResult");

}


mPoiSearch.searchInCity(new PoiCitySearchOption()

.city("杭州")//必填

        .keyword("工商银行")//必填

        .pageNum(10));

城市检索

我们进行城市检索,会回调到onGetPoiResult()里面

@Override // 查询结果回调

    public void onGetPoiResult(PoiResult poiResult) {

List poiInfos=poiResult.getAllPoi();

        PoiInfo poi = poiResult.getAllPoi().get(0);

//通过第一条检索信息对应的uid发起详细信息检索

        mPoiSearch.searchPoiDetail((new PoiDetailSearchOption()).poiUid(poi.uid));

        Log.e(TAG,"onGetPoiResult");

    }

然后我们可以在里面对查询的到某一条信息进行详情信息检索,这次查到的信息会回调到

@Override

public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {

Log.e(TAG,"onGetPoiDetailResult");

}

比如我这里查询到的第一条数据是


(8)POI检索_第1张图片

然后详细信息

(8)POI检索_第2张图片

POI周边检索


周边检索是在一个圆形范围内的POI检索,适用于以某个位置为中心点,自定义搜索半径,搜索某个位置附近的POI。

设置SearchOption,发起周边检索请求示例如下:

mPoiSearch.searchNearby(new PoiNearbySearchOption() .location(new LatLng(39.915446, 116.403869)) .radius(100) .keyword("餐厅") );

这里的radius就是设置以搜索点位圆心,的半径长度,这里半径长度是100米

我们一般是已自己所在位置为圆心,搜索附近5公里以内的商家

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("餐厅"));

你可能感兴趣的:((8)POI检索)