【问题标题】:Clear circles in google maps在谷歌地图中清除圆圈
【发布时间】:2014-01-30 16:32:41
【问题描述】:

我正在尝试从地图中删除一些圆圈,但没有按预期工作。这是我的代码。

我用来画圆的函数:

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);

  }

}

【问题讨论】:

  • 你写了At the end I have just the latest drawn circle removed. 这听起来像是典型的关闭问题,但从提供的部分代码中我看不到它。另一种可能性是您只有一个索引集。 circleId 是如何生成的?你能提供整个代码吗?
  • @AntoJurković circleId 是在我在 for 循环中调用 drawCircle 函数之前生成的。 for var circleId=0; circleId &lt; size; CircleId++) { drawCircle(marker, SiteSirclesDistances[i], circleId);
  • @AntoJurković cityCircle[circleId] = new google.maps.Circle(circleOptions); 在 drawCircle 函数中。我不明白你的意思,对不起...
  • 我在以下已解决的问题中找到了解决方案。 [谷歌地图 v3:从地图上清除由折线组成的圆圈][1] [1]:stackoverflow.com/questions/6539215/…

标签: javascript google-maps maps


【解决方案1】:

typeof 运算符将类型转换为 String 值,因此您应该检查:

typeof cityCircle[0] != "undefined"

【讨论】:

  • 我的代码中的错字...调整该行后,没有删除任何圆圈,即使是最新绘制的圆圈。 ??????
  • @user1460038 你能展示一些活生生的例子或更多代码吗?这个if 声明在哪里,等等……你怎么称呼它?在 zoom_change 事件中?
  • @user1460038 你在哪里定义cityCircle?
  • 我在脚本开头使用var cityCircle = new Array(); 定义了它。
  • 这不在您的“整个代码”中。如果您的“整个代码”是复制问题所需的全部代码(包括 HTML 标记),那将会很有用。
猜你喜欢
  • 2018-02-25
  • 1970-01-01
  • 2023-04-10
  • 2015-01-04
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
相关资源
最近更新 更多