谷歌地图API - 围绕标记切换圈子?

时间:2012-05-21 13:22:05

标签: javascript google-maps geometry toggle

我正在尝试显示一系列标记,当点击时,它们将显示一个信息窗口以及一个半径为圆形的圆,其大小也是数组的一部分。

我已经显示了标记,信息框和圆圈,但我正在努力切换圆圈。

如果我希望所有圈子最初都打开或关闭,我还没有下定决心,我想这取决于我最终得到了多少...

这是我到目前为止所拥有的: -

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<title>Google Maps API Tests</title>
<style type="text/css">
html {font-family:Tahoma,verdana,sans-serif; font-size:0.75em;}
p {font-weight:bold;}
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.6&amp;sensor=false"></script>
<script type="text/javascript">
//<![CDATA[
  function initialize() {

    var myLatlng = new google.maps.LatLng(36.637484, -121.51057);
    var myOptions = {
      zoom: 6,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      streetViewControl: true
    }

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    setMarkers(map, sites);
    infowindow = new google.maps.InfoWindow({
            content: "loading..."
        });

  }


    var sites = [
        ['Google', 37.422117, -122.083856, 'http://www.google.com/', 402336],
        ['Yahoo', 34.030194, -118.47479, 'http://www.yahoo.com/', 201168]
    ];



    function setMarkers(map, markers) {

        for (var i = 0; i < markers.length; i++) {
            var sites = markers[i];
            var siteLatLng = new google.maps.LatLng(sites[1], sites[2]);
            var marker = new google.maps.Marker({
                position: siteLatLng,
                map: map,
                title: sites[0],
                html: '<p>'+sites[0]+'</p><a href="'+sites[3]+'">Web Link</a>'
            });

            var circle = new google.maps.Circle({
                map: map,
                radius: sites[4],
                fillColor: '#12a3eb',
                fillOpacity: 0.15,
                strokeColor: '#0177b3'
            });

            circle.bindTo('center', marker, 'position'); 


            google.maps.event.addListener(marker, "click", function () {
                infowindow.setContent(this.html);
                infowindow.open(map, this);
            });
        }
    }
//]]>
</script>
</head>
<body style="margin:0px; padding:0px;" onload="initialize()">
  <div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

setMap(null)将删除任何Google地图控件的显示。要从地图中删除圆圈,请使用

   circle.setMap(null)

并以不同的半径重新渲染圆圈

  cirlce.setMap(map);
  circle.set('radius', new_radius_value * 1000);