Android studio3.0对于百度地图api开发(6)——百度地图地图POI检索(续)

    接着上一篇文章继续,在上一篇文章中,我们已经解决了在一定区域范围内的搜索。https://blog.csdn.net/qq_41562408/article/details/82820344就上文有一点需要补充,就是对于范围的确定那段代码

LatLngBounds bounds=new LatLngBounds.Builder().include(new LatLng(40.048459,116.302072))
        .include(new LatLng(40.050675,116.304317)).build();

其意思就是以这两点纬经度确定的一对对角确定一个矩形。承接上一篇文章,这篇文章我们来实现百度地图地图POI检索中的城市内搜索和范围内搜索。

1、城市内搜索

其核心代码为:

PoiCitySearchOption params=new PoiCitySearchOption();
params.city("廊坊");
params.keyword("加油站");
params.pageCapacity(10);//设置一页获取10条数据
params.pageNum(pagenum);//指定获取哪一页
return params;

由于同为POI检索,所以与上文有很多重复的地方,所以笔者就直接在上一项目基础上进行操作,在原有的基础上添加变量:

private int pagenum;

oncreat方法不变,后面的方法变为:

public boolean onPoiClick(int i) {
    //当点击一个搜索出来的兴趣点的时候,再去搜索更详细的内容
    PoiInfo poiInfo=poiOverlay.getPoiResult().getAllPoi().get(i);
    poiSearch.searchPoiDetail(getSearChDetailParams(poiInfo.uid));
    return true;
}
private PoiDetailSearchOption getSearChDetailParams(String poiuid) {
    PoiDetailSearchOption params=new PoiDetailSearchOption();
    params.poiUid(poiuid);
    return params;
}

@Override
public void onGetPoiResult(PoiResult result) {
    if (result==null || result.error!= SearchResult.ERRORNO.NO_ERROR){
        Toast.makeText(getApplicationContext(),"没有搜索到结果",Toast.LENGTH_SHORT).show();
        return;
    }
    poiOverlay.setData(result);
    poiOverlay.addToMap();//把所有的数据变成覆盖物添加到百度map上面
    poiOverlay.zoomToSpan();//把所有的搜索结果
}

@Override
public void onGetPoiDetailResult(PoiDetailResult result) {
    if (result==null||result.error!= SearchResult.ERRORNO.NO_ERROR){
        Toast.makeText(getApplicationContext(),"没有详细信息",Toast.LENGTH_SHORT).show();
        return;
    }
    Toast.makeText(getApplicationContext(),""+result.getShopHours()+","+result.getTelephone(),Toast.LENGTH_SHORT).show();
}

@Override
public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {

}
public PoiCitySearchOption getSearchParams() {
    PoiCitySearchOption params=new PoiCitySearchOption();
    params.city("廊坊");
    params.keyword("加油站");
    params.pageCapacity(10);//设置一页获取10条数据
    params.pageNum(pagenum);//指定获取哪一页
    return params;
}
public void poiSearchInit() {
    poiSearch.searchInCity(getSearchParams());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode==KeyEvent.KEYCODE_1){
        //获取下一页数据
        pagenum++;
        poiSearch.searchInCity(getSearchParams());
    }
    return super.onKeyDown(keyCode, event);
}

运行结果如图:Android studio3.0对于百度地图api开发(6)——百度地图地图POI检索(续)_第1张图片 Android studio3.0对于百度地图api开发(6)——百度地图地图POI检索(续)_第2张图片

 2、周边搜索

其核心代码为:

PoiNearbySearchOption params=new PoiNearbySearchOption();
params.location(target);//指定搜索位置
params.radius(1000);//搜索范围
params.keyword("学校");//搜索内容
return params;

同样笔者也是在一篇项目基础上进行改变oncreat方法不用变

之后代码:

public boolean onPoiClick(int i) {
    PoiInfo poiInfo=poiOverlay.getPoiResult().getAllPoi().get(i);
    Toast.makeText(getApplicationContext(),poiInfo.name+","+poiInfo.address,Toast.LENGTH_SHORT).show();
    return true;
}
@Override
public void onGetPoiResult(PoiResult result) {
    if (result==null || result.error!= SearchResult.ERRORNO.NO_ERROR){
        Toast.makeText(getApplicationContext(),"没有搜索到结果",Toast.LENGTH_SHORT).show();
        return;
    }
    poiOverlay.setData(result);
    poiOverlay.addToMap();//把所有的数据变成覆盖物添加到百度map上面
    poiOverlay.zoomToSpan();//把所有的搜索结果
}

@Override
public void onGetPoiDetailResult(PoiDetailResult result) {
    if (result==null||result.error!= SearchResult.ERRORNO.NO_ERROR){
        Toast.makeText(getApplicationContext(),"没有详细信息",Toast.LENGTH_SHORT).show();
        return;
    }
    Toast.makeText(getApplicationContext(),""+result.getShopHours()+","+result.getTelephone(),Toast.LENGTH_SHORT).show();
}

@Override
public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {

}
public void poiSearchInit() {
    poiSearch.searchNearby(getSearchparms());
}
private PoiNearbySearchOption getSearchparms() {
    PoiNearbySearchOption params=new PoiNearbySearchOption();
    params.location(target);//指定搜索位置
    params.radius(5000);//搜索范围
    params.keyword("学校");//搜索内容
    return params;
}

效果如下:Android studio3.0对于百度地图api开发(6)——百度地图地图POI检索(续)_第3张图片Android studio3.0对于百度地图api开发(6)——百度地图地图POI检索(续)_第4张图片

很尴尬的事情发生了,为什么我的学校查不到,之前查的到的,前几天还显示了的,就很难受,给我道友谁要是查到了,告诉我这是为什么?我学校就在离自然公园最近,我之前做的项目查到过以图为证: 

Android studio3.0对于百度地图api开发(6)——百度地图地图POI检索(续)_第5张图片

 

另外谁要是对我那个项目感兴趣可以阅读以下文章,这是一个较为综合的百度地图应用。 https://blog.csdn.net/qq_41562408/article/details/82788087项目源码连接为:https://download.csdn.net/download/qq_41562408/10679557只要一个积分哦,因为都不熟悉套路,只要了一个积分,现在感觉好亏啊!!!!(忘了说明,这个项目有关登录界面密码账号都是111)。

拜拜了!我要吃月饼去了,中秋节不能回家,只能和老乡之间相依为命了。O(∩_∩)O哈哈~

你可能感兴趣的:(Androidstudio,百度地图)