2011-07-05 127 views
16

是有办法的信息窗口添加到由google.maps.Circle创建谷歌地图V3添加信息窗口到了一圈

像这样

var circ = new google.maps.Circle({ 
      center:latlng, 
      clickable:false, 
      fillColor:colors[count], 
      fillOpacity:0.3, 
      map:map, 
      radius:radius, 
      strokeColor:colors[count], 
      strokeOpacity:0.3}); 

//create info window 
var infoWindow= new google.maps.InfoWindow({ 
    content: "Your info here" 
    }); 

//add a click event to the circle 
google.maps.event.addListener(circ, 'click', function(){ 
//call the infoWindow 
infoWindow.open(map, circ); 
}); 

或者有一种方法可以在圆圈中心创建一个不可见的标记,可以点击该标记访问infoWindow

+0

信息窗口或替代地是有办法创建在可以点击访问信息窗口 – trs

回答

37

您可以为您的圆形覆盖图提供信息窗口。但是你必须稍微调整你的代码。

首先,需要为您的圆形覆盖图设置clickable=true(否则不会处理圆上的点击事件)。

然后你必须改变点击侦听器的代码。将circle作为函数open()的参数不起作用(Circle不是MVCObject的正确类型,其解释请参阅InfoWindow .open()函数的文档)。要显示信息窗口,您必须提供其位置 - 例如单击事件的位置,圆心,....

的代码然后

google.maps.event.addListener(circ, 'click', function(ev){ 
    infoWindow.setPosition(ev.latLng); 
    infoWindow.open(map); 
}); 

google.maps.event.addListener(circ, 'click', function(ev){ 
    infoWindow.setPosition(circ.getCenter()); 
    infoWindow.open(map); 
}); 

回答您的评论: 您可以创建一个用一个看不见的标记(只需将完全透明的图像作为标记图标),但我更喜欢使用Circle叠加的解决方案。

+0

什么EV表示圆心的可见标记?并有一种方法来指示用户点击圆圈,如标记中的“标题”选项 – trs

+0

ev是MouseEvent(http://code.google.com/apis/maps/documentation/javascript/reference.html #MouseEvent)。圆形覆盖图没有任何文本指示符。但是,当可点击为true时,光标位于圆上时会发生变化。创建文本指示器并不那么简单 - 我会用自定义覆盖和圆形的mouseover事件侦听器来做这样的事情。 – Tomik

+0

我已经尝试过这种方法,但没有奏效。我收到点击事件,但无法打开infoWindow!你有没有其他提示? – Future2020

2

到设定在鼠标单击

google.maps.event.addListener(circ, 'click', function(ev){ 
    infoWindow.setPosition(ev.latLng); //<-- ev matches what you put^(mouse event) 
    infoWindow.open(map); 
});