有没有一种方法可以将infoWindow添加到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});




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

最佳答案

您可以为自己的圈子叠加显示信息窗口。但是您必须稍微调整代码。

首先,必须为您的“圈子”叠加层设置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覆盖的解决方案。

关于google-maps-api-3 - 谷歌 map v3向圈子添加信息窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6584358/

10-10 23:11