谷歌地图,圈子没有从地图中删除自己

时间:2015-04-19 18:08:45

标签: google-maps geometry

每次我点击右键时都会放置一个圆圈,在用户放置五个圆圈后,我希望重置所有圆圈,我使用的是circle.setMap(null),但它没有任何效果,任何人都可以伸出援助之手这里吗?

        google.maps.event.addListener(map, "rightclick", function(event) 
        {
            loadMarkers();

            circle = new google.maps.Circle
            ({
            clickable: false,
            center: event.latLng,
            radius: 1000,       // Convert to meters
            fillColor: '#00FF00',
            fillOpacity: 0.2,
            //map: map
            });

            numOfCircles+=1;

            if(numOfCircles <= 5)
            {
                circle.setMap(map);
            }
            else
            {
                numOfCircles = 0;
                circle.setMap(null);
            }
        });

提前致谢

1 个答案:

答案 0 :(得分:1)

您只是将最后一个圆的地图属性设置为null。您需要保留对它们的引用并将它们全部设置为null。

var circles = [];
google.maps.event.addListener(map, "rightclick", function(event) 
{
        var circle = new google.maps.Circle({
          clickable: false,
          center: event.latLng,
          radius: 1000,       // Convert to meters
          fillColor: '#00FF00',
          fillOpacity: 0.2,

        });
        circles.push(circle);

        if(circles.length <= 5)
        {
            circle.setMap(map);
        }
        else
        {
            for (var i=0; i<circles.length; i++) {
                circles[i].setMap(null);
            }
            circles = [];
        }
});

working fiddle

代码段:

function initialize() {
  var map = new google.maps.Map(
    document.getElementById("map_canvas"), {
      center: new google.maps.LatLng(37.4419, -122.1419),
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
  var circles = [];
  google.maps.event.addListener(map, "rightclick", function(event) {
    // loadMarkers();

    var circle = new google.maps.Circle({
      clickable: false,
      center: event.latLng,
      radius: 1000, // Convert to meters
      fillColor: '#00FF00',
      fillOpacity: 0.2,
      //map: map
    });
    circles.push(circle);

    if (circles.length <= 5) {
      circle.setMap(map);
    } else {
      for (var i = 0; i < circles.length; i++) {
        circles[i].setMap(null);
      }
      circles = [];
    }
  });

}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map_canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas" style="border: 2px solid #3872ac;"></div>