美文网首页
(8)POI检索

(8)POI检索

作者: 朋友那么多交心有几个 | 来源:发表于2019-01-13 16:38 被阅读0次

    百度地图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");

    }

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

    然后详细信息

    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检索

          本文链接:https://www.haomeiwen.com/subject/mutldqtx.html