业务需求:获取一定范围内百度地图中所有店面
(以下代码实现的‘一定范围’指圆,显示某检索值下所有地图返回的店面)
var circle = new BMap.Circle(point,1000,{fillColor:"blue", strokeWeight: 1 ,fillOpacity: 0.3, strokeOpacity: 0.3});map.addOverlay(circle);circle.disableMassClear();var ResultArray = [];var local1 = new BMap.LocalSearch(map,{renderOptions : {map : map,// panel : "content"},onMarkersSet:function (array) {console.log(array);},onInfoHtmlSet:function (LocalResultPoi) {console.log(LocalResultPoi);},onResultsHtmlSet:function (element) {console.log(element);},onSearchComplete : function(results) {// 需要获取当前搜索总共有多少条结果var totalPages = results.getNumPages();var currPage = results.getPageIndex();// 获取当前是第几页数据if (currPage <totalPages - 1) {console.log(results.getCurrentNumPois());ResultArray.push(...local1.getResults().Br);local1.gotoPage(currPage + 1); // 遍历到最后一页之后不再进行下一页搜索,此时,已经获取到全部的搜索结果,console.log(local1.getResults());} else {// 已经到达最后一页结果ResultArray.push(...local1.getResults().Br);console.log(ResultArray);map.clearOverlays();for (var store of ResultArray){// console.log('dayin');var marker = new BMap.Marker(store.point);map.addOverlay(marker);}// alert("全部结果有:" + ResultArray.length + "------原本搜索结果有:" + results.getNumPois());}},pageCapacity : 50});local1.searchNearby('餐饮',point,1000);
注:代码里point,map没有给,请用自己的。另外由于本人使用react,所以不提供完整代码啦。(这只是测试用代码实际使用请自行修改,还有就是大量标注点导致的卡顿问题...)
排坑:
local虽然提供了getResults方法,但在类参考中并没有提供获取当页列表的方法。代码中使用getResults().Br获取,希望有会获取的大佬分享下
建议每页容量不要超过50
最后效果
参考文章:获取本地搜索全部结果
百度地图提供的接口