3

我使用下面的代码通过半径为 60.000m 的单击事件显示圆形。

<html>
<head>
<div id="map"></div>
<style media="screen, projection" type="text/css">

map {
        width: 800px;
        height: 600px;
      }

</style>
</head>
<body>

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">

</script><script type="text/javascript">

        function initialize()   
        {
            var mapCenter = new google.maps.LatLng(40, -74);

            var map = new google.maps.Map(document.getElementById('map'), {
                'zoom': 7,
                'center': mapCenter,
                'mapTypeId': google.maps.MapTypeId.ROADMAP
            });

            // Add click event listener

            google.maps.event.addListener(map, "click", function (e) {

                var image = new google.maps.MarkerImage(  
                         'image/data/ConstBuilder/marker.png',
                          new google.maps.Size(40, 35),
                          new google.maps.Point(0, 0),
                          new google.maps.Point(20, 30)
                        );

                var shadow = new google.maps.MarkerImage(
                         'image/data/ConstBuilder/shadow.png',   
                          new google.maps.Size(62, 35),    
                          new google.maps.Point(0, 0),    
                          new google.maps.Point(0, 35)
                        );

                var marker = new google.maps.Marker({
                      draggable: true,
                      raiseOnDrag: false,
                      icon: image,
                      shadow: shadow,
                      map: map,
                      position: e.latLng
                });

                var circle = new google.maps.Circle({
                    map: map,
                    radius: 60000,
                    fillColor: '#AA0000'
                });

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

        google.maps.event.addDomListener(window, 'load', initialize);
    </script>   
</body>
</html

现在我想再添加一项功能 - 可以更改我的 Click 事件(显示圆圈)的半径值的单选按钮。我知道我需要使用getRadius()新事件之类的方法,我尝试在下面实现代码但没有成功。

google.maps.event.addDomListener(

document.getElementById('circle_radius'), 'change', function() {

circle.setRadius(document.getElementById('circle_radius').value)

});

谁能帮我找到解决方案?

4

2 回答 2

1

尝试用此替换您的代码,更改部分在正文标记之后。

<html>
<head>
<div id="map"></div>
<style media="screen, projection" type="text/css">

#map {
        width: 800px;
        height: 400px;
      }

</style>
</head>
<body>
<div>
30.000m <input type="radio" name="radiusBtns" id="radioBtn1" onclick="calcRadius(30000);" value="30" /><br />
60.000m<input type="radio" name="radiusBtns"  id="radioBtn2" onclick="calcRadius(60000);" value="60" /><br />
90.000m<input type="radio" name="radiusBtns"  id="radioBtn3" onclick="calcRadius(90000);" value="90" />
</div>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">

</script><script type="text/javascript">
        var circle, map, pre_radius;
        function initialize()   
        {
            pre_radius = '60000';

            var mapCenter = new google.maps.LatLng(40, -74);

            map = new google.maps.Map(document.getElementById('map'), {
                'zoom': 7,
                'center': mapCenter,
                'mapTypeId': google.maps.MapTypeId.ROADMAP
            });

            // Add click event listenecal
            calcRadius(60000);

        };

        function calcRadius(radiusVal)
        {
            //console.log(document.getElementById("#radioBtn1").value);
            pre_radius = radiusVal;
            google.maps.event.addListener(map, "click", function (e) {

                var image = new google.maps.MarkerImage(  
                         'http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png',
                          new google.maps.Size(40, 35),
                          new google.maps.Point(0, 0),
                          new google.maps.Point(20, 30)
                        );

                var shadow = new google.maps.MarkerImage(
                         'http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png',   
                          new google.maps.Size(62, 35),    
                          new google.maps.Point(0, 0),    
                          new google.maps.Point(0, 35)
                        );

                var marker = new google.maps.Marker({
                      draggable: true,
                      raiseOnDrag: false,
                      icon: image,
                      map: map,
                      position: e.latLng
                });

                circle = new google.maps.Circle({
                    map: map,
                    radius: pre_radius,
                    fillColor: '#AA0000'
                });

                console.log(circle);

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

        google.maps.event.addDomListener(window, 'load', initialize);
    </script>   
</body>
</html>
于 2013-02-27T12:40:27.193 回答
0

使用 Click 事件而不是 Change 事件。

希望它会起作用

谢谢

于 2013-03-13T11:20:23.237 回答