簡體   English   中英

清除Google地圖中的圈子

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM