[英]Clear circles in google maps
我正在嘗試從地圖上刪除一些圓圈,但無法正常工作。 這是我的代碼。
我用來畫圓的功能:
for (var city in citymap) {
var circleOptions = {
map: GoogleMap,
radius: distance, //In meters
strokeColor: circleColor,
fillOpacity: 0.0,
strokeWeight: circleWeight,
strokeOpacity: 0.5,
center: citymap[city].center,
};
// Add the circle for this city to the map.
cityCircle[circleId] = new google.maps.Circle(circleOptions);
}
看一下cityCircle數組,我有8個元素,從0到7。我試圖使用在此處stackoverflow論壇中獲取的以下功能刪除它們:
function RemoveOverlays(overlays) {
for (var i = 0; i < overlays.length; i++) {
overlays[i].setMap(null);
}
我在else if循環中調用該函數,如下所示:
else if (zoom <6 ){
if (typeof cityCircle[0] !=undefined && cityCircle[0] !=null) {
RemoveOverlays(cityCircle)
}
}
最后,我刪除了最新繪制的圓圈。 我做錯了什么? 謝謝!
這是完整的代碼。
// Listeners for newly created Map
google.maps.event.addListener(GoogleMap, 'center_changed', function() {
localStorage['CenterLat'] = GoogleMap.getCenter().lat();
localStorage['CenterLon'] = GoogleMap.getCenter().lng();
});
google.maps.event.addListener(GoogleMap, 'zoom_changed', function() {
localStorage['ZoomLvl'] = GoogleMap.getZoom();
var zoom = GoogleMap.getZoom(); //gets zoom level.
if (SiteCircles && zoom >=6) {
for (var i=0;i<SiteCirclesDistances.length;i++) {
for (var circleId=0; circleId < size; circleId++) {
drawCircle(marker, SiteCirclesDistances[i], circleId); // in meters
}
}
} else if (zoom <6 ){
if (typeof cityCircle[index] !="undefined" && cityCircle.length >0) {
RemoveOverlays(cityCircle)
}
}
});
// Add home marker if requested
if (SiteShow && (typeof SiteLat !== 'undefined' || typeof SiteLon !== 'undefined')) {
for (var city in citymap) {
var siteMarker = new google.maps.LatLng(citymap[city].SiteLat, citymap[city].SiteLon);
var markerImage = circleImage; //Defined on config.js
var marker = new google.maps.Marker({
position: siteMarker,
map: GoogleMap,
icon: {url:markerImage, scaledSize: new google.maps.Size(32, 32)},
title: citymap[city].title,
zIndex: -99999
});
}
function drawCircle(marker, distance, circleId) {
if (typeof distance === 'undefined') {
return false;
if (!(!isNaN(parseFloat(distance)) && isFinite(distance)) || distance < 0) {
return false;
}
}
distance *= 1000.0;
if (!Metric) {
distance *= 1.852;
}
//Create range circles
for (var city in citymap) {
var circleOptions = {
map: GoogleMap,
radius: distance, //In meters
strokeColor: circleColor,
fillOpacity: 0.0,
strokeWeight: circleWeight,
strokeOpacity: 0.5,
center: citymap[city].center,
};
// Add the circle for this city to the map.
cityCircle[circleId] = new google.maps.Circle(circleOptions);
}
}
typeof
運算符將類型轉換為字符串值,因此您應通過以下方式進行檢查:
typeof cityCircle[0] != "undefined"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.