我正在寻找一个能够清除地图中所有图画的javascript函数;像map.removeMarkers()
或map.removeOverlays()
这样的东西,但是对于形状 - 特别是圆圈。
我已经在Android上看到了一些关于如何做到这一点的答案,但我正在寻找一个网络解决方案。我使用gmaps.js绘制了我的圈子:
// create circle loop
for( i = 0; i < data.mapArray.length; i++ ) {
circle = map.drawCircle({
lat: data.mapArray[i].lat,
lng: data.mapArray[i].lng,
radius: parseInt(data.mapArray[i].radius),
strokeColor: '#'+data.mapArray[i].color,
strokeWeight: 8,
fillOpacity: 0,
click: (function (e) {
return function () {
$('#'+modalType).modal({
remote: modalURL+e
});
};
})(data.mapArray[i].id)
});
} // end loop
我猜测在这个循环中我需要将圆圈添加到数组中,然后调用函数来清除所有这些,但我不确定如何执行它。
答案 0 :(得分:3)
一个简单的解决方案是将对象存储在数组中
<input type="button" value="Clear all" onclick="removeAllcircles()"/>
<script>
var circles = [];
// create circle loop
for( i = 0; i < data.mapArray.length; i++ ) {
var circle = map.drawCircle({
lat: data.mapArray[i].lat,
lng: data.mapArray[i].lng,
radius: parseInt(data.mapArray[i].radius),
strokeColor: '#'+data.mapArray[i].color,
strokeWeight: 8,
fillOpacity: 0,
click: (function (e) {
return function () {
$('#'+modalType).modal({
remote: modalURL+e
});
};
})(data.mapArray[i].id)
});
// push the circle object to the array
circles.push(circle);
} // end loop
// remove All circles
function removeAllcircles() {
for(var i in circles) {
circles[i].setMap(null);
}
circles = []; // this is if you really want to remove them, so you reset the variable.
}
</script>
修改
一旦你拥有了那个数组,就可以用它来切换on / of,或者定位一些特定的圆圈,比如circkles [17] ......
<input type="button" value="Toggle on" onclick="toggleOn()"/>
<input type="button" value="Toggle off" onclick="toggleOff()"/>
<script>
// Toggle off
function toggleOff() {
for(var i in circles) {
circles[i].setMap(null);
}
}
// Toggle on
function toggleOn() {
for(var i in circles) {
circles[i].setMap(map);
}
}
</script>
答案 1 :(得分:0)
认为这段代码更容易些。
var circles = [];
// create circle loop
for( i = 0; i < data.mapArray.length; i++ ) {
circle = map.drawCircle({
lat: data.mapArray[i].lat,
lng: data.mapArray[i].lng,
radius: parseInt(data.mapArray[i].radius),
strokeColor: '#'+data.mapArray[i].color,
strokeWeight: 8,
fillOpacity: 0,
click: (function (e) {
return function () {
$('#'+modalType).modal({
remote: modalURL+e
});
};
})(data.mapArray[i].id)
});
circles.push(circle);
} // end loop
什么时候需要删除就可以了。
circles.forEach((circle) => {
circle.setMap(null);
});
circles = [];