Javascript 删除多个圆圈google maps api

Javascript 删除多个圆圈google maps api,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我正试图通过“缩放更改”事件删除圆圈。放大时会创建它们,但缩小时不会删除它们。另一方面,标记效果很好,放大时会出现,缩小时会消失。有人能帮我吗 function plotBusinesses() { var i; for (i = 0; i < businesses.length; i++) { codeBusinesses(businesses[i]); }

我正试图通过“缩放更改”事件删除圆圈。放大时会创建它们,但缩小时不会删除它们。另一方面,标记效果很好,放大时会出现,缩小时会消失。有人能帮我吗

        function plotBusinesses() {
            var i;
            for (i = 0; i < businesses.length; i++) {
                codeBusinesses(businesses[i]);
            }
        }

        function codeBusinesses(address) {
            geocoder.geocode({'address': address[1]}, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    marker = new google.maps.Marker({
                        map: map,
                        position: results[0].geometry.location,
                        icon: image,
                        title: address[0]
                    });

                    //avoiding preloading markers
                    marker.setMap(null);

                    var covered = {
                        strokeColor: '#FF0000',
                        strokeOpacity: 1,
                        strokeWeight: 0,
                        fillColor: 'green',
                        fillOpacity: 0.8,
                        //map: map,
                        center: results[0].geometry.location,
                        radius: 80
                    };


                    circleBuss = new google.maps.Circle(covered);
                    circleBuss.setMap(null);

                    google.maps.event.addListener(marker, 'click', function() {
                        infowindow.setContent(address[0]);
                        infowindow.open(map, this);
                    });
                    bounds.extend(results[0].geometry.location);

                    google.maps.event.addListener(map, 'zoom_changed', function() {
                        var zoom = map.getZoom();
                        //alert(zoom);

                        if (zoom <= 12) {
                            for (var i = 0; i < markersArray.length; i++) {
                                markersArray[i].setMap(null);
                                circleBuss[i] = new google.maps.Circle(covered);
                                circleBuss[i].setMap(null);               
                            }

                        } else {
                            //marker.setMap(map);
                            for (var i = 0; i < markersArray.length; i++) {
                                markersArray[i].setMap(map);
                                circleBuss[i] = new google.maps.Circle(covered);
                                circleBuss[i].setMap(map);
                            }
                        }
                    });
                    markersArray.push(marker);
                }
                else {
                    alert("Geocode was not successful for the following reason: " + status);
                }
                //map.fitBounds(bounds);
            });
        }
函数{
var i;
对于(i=0;i<0.length;i++){
代码业务(业务[i]);
}
}
功能代码业务(地址){
geocoder.geocode({'address':地址[1]},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
marker=新的google.maps.marker({
地图:地图,
位置:结果[0]。geometry.location,
图标:图像,
标题:地址[0]
});
//避免预加载标记
marker.setMap(空);
涵盖的风险价值={
strokeColor:“#FF0000”,
频闪不透明度:1,
冲程重量:0,
fillColor:'绿色',
填充不透明度:0.8,
//地图:地图,
中心:结果[0].geometry.location,
半径:80
};
circleBuss=新的google.maps.Circle(已覆盖);
circleBuss.setMap(空);
google.maps.event.addListener(标记'click',函数(){
infowindow.setContent(地址[0]);
打开(地图,这个);
});
extend(结果[0].geometry.location);
google.maps.event.addListener(映射'zoom_changed',函数(){
var zoom=map.getZoom();
//警报(缩放);

如果(缩放创建一个圆形数组,并像使用标记一样在其上迭代

像这样的

var Circles = [];

function plotBusinesses() {
    var i;
    for (i = 0; i < businesses.length; i++) {
        codeBusinesses(businesses[i]);
    }
}

function codeBusinesses(address) {
    geocoder.geocode({'address': address[1]}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location,
                icon: image,
                title: address[0]
            });

            //avoiding preloading markers
            marker.setMap(null);

            var covered = {
                strokeColor: '#FF0000',
                strokeOpacity: 1,
                strokeWeight: 0,
                fillColor: 'green',
                fillOpacity: 0.8,
                //map: map,
                center: results[0].geometry.location,
                radius: 80
            };

            Circles.push(new google.maps.Circle(covered));

            google.maps.event.addListener(marker, 'click', function() {
                infowindow.setContent(address[0]);
                infowindow.open(map, this);
            });
            bounds.extend(results[0].geometry.location);

            google.maps.event.addListener(map, 'zoom_changed', function() {
                var zoom = map.getZoom();
                //alert(zoom);

                if (zoom <= 12) {
                    for (var i = 0; i < markersArray.length; i++) {
                        markersArray[i].setMap(null);           
                    }
                    for (var i = 0; i < Circles.length; i++) {
                        Circles[i].setMap(null);
                    }
                } else {
                    //marker.setMap(map);
                    for (var i = 0; i < markersArray.length; i++) {
                        markersArray[i].setMap(map);
                    }
                    for (var i = 0; i < Circles.length; i++) {
                        Circles[i].setMap(map);
                    }
                }
            });
            markersArray.push(marker);
        }
        else {
            alert("Geocode was not successful for the following reason: " + status);
        }
        //map.fitBounds(bounds);
    });
}
var循环=[];
职能部门(){
var i;
对于(i=0;i<0.length;i++){
代码业务(业务[i]);
}
}
功能代码业务(地址){
geocoder.geocode({'address':地址[1]},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
marker=新的google.maps.marker({
地图:地图,
位置:结果[0]。geometry.location,
图标:图像,
标题:地址[0]
});
//避免预加载标记
marker.setMap(空);
涵盖的风险价值={
strokeColor:“#FF0000”,
频闪不透明度:1,
冲程重量:0,
fillColor:'绿色',
填充不透明度:0.8,
//地图:地图,
中心:结果[0].geometry.location,
半径:80
};
Circles.push(新的google.maps.Circle(覆盖));
google.maps.event.addListener(标记'click',函数(){
infowindow.setContent(地址[0]);
打开(地图,这个);
});
extend(结果[0].geometry.location);
google.maps.event.addListener(映射'zoom_changed',函数(){
var zoom=map.getZoom();
//警报(缩放);

if(zoom)将圆圈推到一个数组上,就像你使用标记一样(在zoom_更改的处理程序之外)。Hi@Polo,它确实有效。将你的代码作为a发布,我会为你修复它。你们是对的,我对标记做了同样的操作,因为这是同一件事。但我使用的推方式是:圆圈。推(覆盖);现在是:圆圈。推(新的google.maps.Circle(covered));非常好用!非常感谢!Circles.push(新的google.maps.Circle(covered))和Circles.push(covered)之间有什么区别?我必须对对象进行push而不是变量???@Polo不客气。Circles.push(covered);只需将covered对象添加到Circles数组中。Circles.push(新建google.maps.Circle(已覆盖));添加google地图圆圈。为了使其更具可读性:
var Circle=新建google.maps.Circle(已覆盖);Circles.push(圆圈);