1. 程式人生 > >Android studio3.0對於百度地圖api開發(6)——百度地圖地圖POI檢索(續)

Android studio3.0對於百度地圖api開發(6)——百度地圖地圖POI檢索(續)

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);
}

執行結果如圖: 

 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;
}

效果如下:

很尷尬的事情發生了,為什麼我的學校查不到,之前查的到的,前幾天還顯示了的,就很難受,給我道友誰要是查到了,告訴我這是為什麼?我學校就在離自然公園最近,我之前做的專案查到過以圖為證: 

拜拜了!我要吃月餅去了,中秋節不能回家,只能和老鄉之間相依為命了。O(∩_∩)O哈哈~