百度地图 map.getOverlays() 返回地图上的所有覆盖物,如何区分并获取maker的经纬度

  在利用百度地图api做多个定位(标记maker)并获取经纬度时,采用map.getOverlays()方法 返回地图上的所有覆盖物并循环遍历数组获取遮盖物的经纬度。然而,却发现实际上的遮盖物比我们的marker数量多。

   获取所有的遮盖物代码:

            var  overlays = map.getOverlays();

           console.log(overlays ); //打印返回值

           返回值overlays为Array,我的返回值如下:

          

 然而第一个返回值length为2,而实际上marker数量为1。第二个返回值length为5,而实际上marker数量为2。经反复测试发现,map.getOverlays()返回的遮盖物不止marker。

我曾尝试比较返回字段来得到想要的值,然而并没找到方法。经阅读百度地图api文档的overlays类发现她的一个函数(方法)isVisible,于是 开始测试。

 代码:      

                 var overlays = map.getOverlays();

                 console.log(overlays ); //打印返回值

                for(let i in overlays){

                    console.log(i,overlays[i].isVisible());

               }

返回结果:

              

 第一个返回值length为2,而实际上marker数量为1,但是返回true的数量为1。第二个返回值length为5,而实际上marker数量为2,但是返回true的数量为2。并且经过检测,返回值

为true的那一组数据就是我们想要的maker的数据。

代码:

                    var  overlays = map.getOverlays();

                    console.log(overlays ); //打印返回值

                   var  points = [ ];

                   for(let i in overlays){

                       console.log(i,overlays[i].isVisible());

                        if(overlays[i].isVisible()){

                            points.push(overlays[i].point);

                        }

               }

               console.log(points);

  一个marker时:

         

两个marker时:(此时可以看到map.getOverlays()的返回值length为2,而上面为5.那是因为地图显示了不同的区域,而地图上的遮盖物数量不一样,所以返回值的length不一样。)ok!问题解决了,深夜又周末的我继续写代码···

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值