业务需求:获取一定范围内百度地图中所有店面
(以下代码实现的‘一定范围’指圆,显示某检索值下所有地图返回的店面)
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
最后效果
参考文章:获取本地搜索全部结果