Android studio3.0對於百度地圖api開發(6)——百度地圖地圖POI檢索(續)
阿新 • • 發佈:2018-12-11
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哈哈~