最近碰到一個關于百度地圖api的問題:
1、首先我需要擷取到一個本地搜尋的全部結果;
2、然後需要對擷取的結果資訊進行讀取以及對這些資訊的個性化展示
大緻操作如下,首先通過result.getNumPois()擷取本次搜尋全部結果記錄數,但是這個結果無法直接全部取到,因為通過getPoi(index)方法隻能擷取目前頁面的幾條資料,是以,我們需要考慮如何将目前頁面改變,能達到周遊結果所有頁面資料的效果,但是很無奈,百度給的api并沒有這樣的方法。經過千辛萬苦,各種百度查詢,終于找到一種方式,就是在每次擷取一個頁面的資料之後,需要使用LocalSearch的gotoPage(PageIndex)重新調處下一頁的資料。
大緻代碼結構如下。
var local1 = new BMap.LocalSearch(
map,
{
renderOptions : {
map : map,
// panel : "resultDiv"
},
onSearchComplete : function(results) {
// 需要擷取目前搜尋總共有多少條結果
var totalResults = results.getNumPois();
var totalPages = results.getNumPages();
var currPage = results.getPageIndex();// 擷取目前是第幾頁資料
// alert("totalResults:" + totalResults);
for (i = 0; i < results.getCurrentNumPois(); i++) {
//resultArray[50 * currPage + i] = results.getPoi(i);//在目前頁面下擷取頁面中的内容
}
if (results.getPageIndex() < results.getNumPages() - 1) {
local1.gotoPage(results.getPageIndex() + 1); // 周遊到最後一頁之後不再進行下一頁搜尋,此時,已經擷取到全部的搜尋結果,
} else {// 已經到達最後一頁結果
alert("全部結果有:" + resultArray.length + "------原本搜尋結果有:" + results.getNumPois());
//本執行個體中是要使用resultArray存儲所有檢索結果,在此else分支對存儲的結果資料進行頁面展示
}
},
pageCapacity : 50
});
local1.searchNearby('景點', pp, 2000);
在代碼片段中,else分支便可以添加自己的處理代碼,且能夠完全擷取到檢索的結果,
這樣,我可以對檢索結果進行布局設定,控制顯示格式,添加動作響應等比較複雜的操作。
//注,代碼片段無法直接運作,需要根據實際進行修飾才能使用。