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(圆圈);