Google Maps API V3 - 通过点击事件更改圆半径

时间:2013-02-27 11:50:36

标签: google-maps javascript-events google-maps-api-3 mouseclick-event

我使用下面的代码来显示Circle with Radius 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)

});

如果有人可以帮我找到解决方案吗?

最佳, 达科

  

2 个答案:

答案 0 :(得分:1)

尝试用此替换代码,更改部分在body标记之后。

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

答案 1 :(得分:0)

使用Click Event而不是Change事件。

希望它会起作用

谢谢