5

所以我能够在我的谷歌地图 v3 上制作一个圆形对象作为叠加层。我将其可编辑属性设置为 true。接下来我想做的是在用户移动圆时获取中心的坐标。为此,我需要某种响应事件而触发的方法。我以为我已经在初始化函数中设置了这一切,如下所示。但是,我没有收到任何警报框。所以我假设这个函数响应事件没有被触发。

function initialize() {  
    cityCenterLatLng = new google.maps.LatLng(cLat, cLong);    
    options = {  
        center : cityCenterLatLng,  
        zoom : 15,  
        mapTypeId : google.maps.MapTypeId.ROADMAP,  
        disableDefaultUI : false,  
        mapTypeControl : true,  
        streetViewControl : true,  
        mapTypeControlOptions : {  
            style : google.maps.MapTypeControlStyle.DEFAULT,  
            position : google.maps.ControlPosition.TOP_LEFT  
        }  
    };  
    map = new google.maps.Map(document.getElementById("map_canvas"), options);  
    $("#map_canvas").css("border", "3px solid black");  


    infoWindow = new google.maps.InfoWindow({});  

    var c = {  
       strokeColor: "#ff0000",  
       strokeOpacity: 0.8,  
       strokeWeight: 3,  
       fillColor: "#b0c4de",  
       fillOpacity: 0.50,  
       map: map,  
       center: cityCenterLatLng,  
       radius: 1000,  
       editable:true  
   };    

    circle = new google.maps.Circle(c);  

    google.maps.event.addListener(circle, 'distance_changed', function()   
    {
        alert('Circle moved');  
        //displayInfo(circle);  
    });  

    google.maps.event.addListener(circle, 'position_changed', function()   
    {  
        alert('dictance changed');  
        //displayInfo(circle);  
    });  
}

function displayInfo(widget)   
{  
    var info = document.getElementById('info');  
    info.innerHTML = 'Circle Center:' + circle.get('position') + ',Circle distance: ' +
    circle.get('distance');  
}  
4

1 回答 1

19

更改distance_changedcenter_changed拖动移动,并用于radius_changed检测调整大小。其他事件在文档中。

https://developers.google.com/maps/documentation/javascript/reference#Circle

向下滚动到“事件”。

对于新值,在侦听器函数中,写入alert(circle.getCenter());circle.getRadius()

于 2012-04-22T06:36:37.677 回答