Google maps api 3 谷歌地图API v3信息窗口不';鼠标悬停/单击多边形时不显示

Google maps api 3 谷歌地图API v3信息窗口不';鼠标悬停/单击多边形时不显示,google-maps-api-3,infowindow,polygons,Google Maps Api 3,Infowindow,Polygons,每当用户将鼠标悬停在地图上的多边形上时,我都会尝试在infowindows中显示动态数据。调试显示数据和其他infowindow/多边形设置正常。我可以在鼠标上方看到颜色的变化,只是信息窗口没有显示。背后的原因可能是什么?我错过了什么 statePolygon = new google.maps.Polygon({ paths: stateBorderCoords, strokeColor: '#f33f00', strokeOpacity: 1, strok

每当用户将鼠标悬停在地图上的多边形上时,我都会尝试在infowindows中显示动态数据。调试显示数据和其他infowindow/多边形设置正常。我可以在鼠标上方看到颜色的变化,只是信息窗口没有显示。背后的原因可能是什么?我错过了什么

statePolygon = new google.maps.Polygon({
    paths: stateBorderCoords,
    strokeColor: '#f33f00', 
    strokeOpacity: 1, 
    strokeWeight: 1,
    fillColor: '#ff0000', 
    fillOpacity: 0.2
});

statePolygon.pId = infoText; // Fetching from a JSON response
statePolygon.wPet = wPet;    // Fetching from a JSON response
statePolygon.infoWindow = new google.maps.InfoWindow();

google.maps.event.addListener(statePolygon,"mouseover",function(event){
    this.setOptions({fillColor: "#00FF00"});
    this.infoWindow.setPosition(event.latLng);
    this.infoWindow.setContent(this.wPet);
    this.infoWindow.open(map, this);
});

google.maps.event.addListener(statePolygon,"mouseout",function(){
    this.setOptions({fillColor: "#FF0000"});
    this.infoWindow.close();
});

google.maps.event.addListener(statePolygon, 'click', function(){
    //createInfoWindow(this.pId);
});

statePolygon.setMap(map);

首先打开信息窗口,然后设置其位置:

但是,我意识到,如果鼠标移动到InfoWindow的顶部(即使它位于多边形的顶部),它将被视为鼠标移动到多边形之外。因此,多边形将变为红色,Infowindow将关闭。但由于鼠标仍在多边形内,信息窗口将再次打开,导致闪烁


我不知道如何解决这个问题(尝试了超时,但也不可靠)。我只想将信息窗口置于预设位置,而不是event.latLng。

首先打开信息窗口,然后设置其位置:

但是,我意识到,如果鼠标移动到InfoWindow的顶部(即使它位于多边形的顶部),它将被视为鼠标移动到多边形之外。因此,多边形将变为红色,Infowindow将关闭。但由于鼠标仍在多边形内,信息窗口将再次打开,导致闪烁


我不知道如何解决这个问题(尝试了超时,但也不可靠)。我只想把信息窗口放在一个预设位置,而不是event.latLng。

如果在行中省略“this”,会发生什么:

this.infoWindow.open(map, this);    
?

在过去的几天里,我一直在与类似的东西作斗争,刚刚发现我的代码适用于google.maps.Markers(如googlepins),但不适用于google.maps.Circles(我猜是google.maps.Polygons)

我的猜测是:“infoWindow.open(map,object)”试图将infoWindow锚定到对象上,它似乎只适用于google.maps.Markers,而不适用于圆、多边形等。似乎有效的是“open(map)”,它不锚定到任何东西上。但是,必须明确设置infoWindow的位置(您已经在这样做了)

编辑:

在我的例子中,这不起作用(假设全局变量映射)

但这确实:

var circle = { clickable: true,
               strokeColor: "darkred",
               strokeOpacity: 1,
               strokeWeight: 1,
               fillColor: "green",
               fillOpacity: 1,
               map: map,
               center: new google.maps.LatLng(55.95,-3.19),
               radius: 45
            };
var marker1 = new google.maps.Circle(circle);

infoWindow = new google.maps.InfoWindow();
infoWindow.setContent("Hello");
infoWindow.setPosition(new google.maps.LatLng(55.95,-3.19));
infoWindow.open(map);
唯一的区别在于最后一行。


考虑到上面的帖子,在打开后设置位置可能会覆盖锚点位置,从而使其出现。

如果在行中省略“this”,会发生什么情况:

this.infoWindow.open(map, this);    
?

在过去的几天里,我一直在与类似的东西作斗争,刚刚发现我的代码适用于google.maps.Markers(如googlepins),但不适用于google.maps.Circles(我猜是google.maps.Polygons)

我的猜测是:“infoWindow.open(map,object)”试图将infoWindow锚定到对象上,它似乎只适用于google.maps.Markers,而不适用于圆、多边形等。似乎有效的是“open(map)”,它不锚定到任何东西上。但是,必须明确设置infoWindow的位置(您已经在这样做了)

编辑:

在我的例子中,这不起作用(假设全局变量映射)

但这确实:

var circle = { clickable: true,
               strokeColor: "darkred",
               strokeOpacity: 1,
               strokeWeight: 1,
               fillColor: "green",
               fillOpacity: 1,
               map: map,
               center: new google.maps.LatLng(55.95,-3.19),
               radius: 45
            };
var marker1 = new google.maps.Circle(circle);

infoWindow = new google.maps.InfoWindow();
infoWindow.setContent("Hello");
infoWindow.setPosition(new google.maps.LatLng(55.95,-3.19));
infoWindow.open(map);
唯一的区别在于最后一行。


考虑到上面的帖子,在打开后设置位置可能会覆盖锚点位置,从而使其出现。

createInfoWindow()
似乎很重要。请添加该函数的定义好吗?
createInfoWindow()
似乎很重要。请添加该函数的定义好吗?函数
createInfoWindow()
可能会向多边形添加一个infoWindow。这可能使
这个.infoWindow
有效,这就是我问这个问题的原因。但你是对的:通常多边形没有。嗨,安德鲁,给多边形添加一个字段信息窗口使代码有效,但根据我的经验,即使这样,信息窗口仍然顽固地不可见,或者在屏幕外/地图上…Doh!google.maps.Circle和google.maps.Polygon没有像google.maps.Marker那样的getPosition()方法或属性位置。因此,我最新的猜测是,使用infoWindow.open(地图、对象)会导致infoWindow位置未定义,因此无法显示。函数
createInfoWindow()
可能会将infoWindow添加到多边形中。这可能使
这个.infoWindow
有效,这就是我问这个问题的原因。但你是对的:通常多边形没有。嗨,安德鲁,给多边形添加一个字段信息窗口使代码有效,但根据我的经验,即使这样,信息窗口仍然顽固地不可见,或者在屏幕外/地图上…Doh!google.maps.Circle和google.maps.Polygon没有像google.maps.Marker那样的getPosition()方法或属性位置。所以我最新的猜测是,使用infoWindow.open(map,object)会导致infoWindow位置未定义,因此没有show.Agree。这是可行的,但唯一的问题是,如果鼠标指向多边形的边界,则会持续闪烁。无论如何,谢谢。至少我有一个进一步研究的起点。我使用同样的方法,也遇到了“闪烁”问题。如果有人有一个解决方案,听到它会很高兴。同意。这是可行的,但唯一的问题是,如果鼠标指向多边形的边界,则会持续闪烁。无论如何,谢谢。至少我有一个进一步研究的起点。我使用同样的方法,也遇到了“闪烁”问题。如果有人有解决办法的话,听到它就太好了。