Google maps api 3 google maps v3在圆圈中添加信息窗口

Google maps api 3 google maps v3在圆圈中添加信息窗口,google-maps-api-3,infowindow,Google Maps Api 3,Infowindow,有没有办法在google.maps.circle创建的圆圈中添加一个信息窗口 像这样的 var circ = new google.maps.Circle({ center:latlng, clickable:false, fillColor:colors[count], fillOpacity:0.3, map:map, radius:radius,

有没有办法在google.maps.circle创建的圆圈中添加一个信息窗口

像这样的

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});


或者,是否有一种方法可以在圆的中心创建一个不可见的标记,单击该标记可以访问一个信息窗口

您可以为您的圆覆盖设置一个信息窗口。但是您必须稍微调整代码

首先,有必要为圆覆盖设置
clickable=true
(否则将不处理圆上的单击事件)

然后您必须更改click侦听器的代码。将circle作为函数open()的参数没有任何效果(circle不是合适的MVCObject类型,请阅读.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(ev.latLng); //<-- ev matches what you put ^ (mouse event)
    infoWindow.open(map);
});
google.maps.event.addListener(循环,'click',函数(ev){

infoWindow.setPosition(ev.latLng);//或者,是否有一种方法可以在圆圈的中心创建一个不可见的标记,单击该标记可以访问infoWindow ev代表什么?是否有一种方法可以让用户像markerev is MouseeEvent()中的“title”选项那样单击圆圈.Circle overlay没有任何文本指示器。但是当clickable为true时,光标在其位于圆上方时会发生变化。创建文本指示器并不是那么简单-我会使用自定义overlay和Circle的mouseover事件侦听器执行此操作。我尝试过此方法,但不起作用。我收到了click事件,但无法执行打开infoWindow!您还有其他提示吗?如果您在循环中生成圆,那么应该使用“infoWindow.setPosition(circ.getCenter());”而不是“infoWindow.setPosition(this.getCenter());”。否则,您的信息窗口将始终在循环中的最后一个圆圈旁弹出。它对我来说只在圆圈的最后一个lat lang上起作用。我有一个lat lang数组,并生成几个圆圈。如何确定每个圆圈的内容?
google.maps.event.addListener(circ, 'click', function(ev){
    infoWindow.setPosition(circ.getCenter());
    infoWindow.open(map);
});
google.maps.event.addListener(circ, 'click', function(ev){
    infoWindow.setPosition(ev.latLng); //<-- ev matches what you put ^ (mouse event)
    infoWindow.open(map);
});