百度地图获取本地搜索(LocalSearch)全部结果并显示标注

业务需求:获取一定范围内百度地图中所有店面

(以下代码实现的‘一定范围’指圆,显示某检索值下所有地图返回的店面)

 


        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

最后效果

参考文章:获取本地搜索全部结果

百度地图提供的接口

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值