天天看點

js中百度地圖API擷取本地搜尋全部結果自定義顯示效果

最近碰到一個關于百度地圖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分支便可以添加自己的處理代碼,且能夠完全擷取到檢索的結果,

這樣,我可以對檢索結果進行布局設定,控制顯示格式,添加動作響應等比較複雜的操作。

//注,代碼片段無法直接運作,需要根據實際進行修飾才能使用。