我在InfoWindows打开时遇到问题。代码调用open函数,但信息窗口不会出现在屏幕上,直到用户做了其他的事情来与地图交互,通常是点击或移动鼠标。InfoWindow不立即打开
这里是预期的逻辑:当你点击一个标记时会打开一个信息窗口。如果已经打开了一个信息窗口,它将关闭前一个窗口,然后打开新的信息窗口。如果你点击地图,信息窗口关闭。
观察到的问题:地图加载。我点击一个标记并出现一个信息窗口。我通过单击信息窗口上的x或点击地图来关闭它。 A)我点击不同的标记。什么都没发生。我再次点击,出现信息窗口。 B)我点击不同的标记。什么都没发生。我再次点击它,信息窗口出现。
无论哪种方式,都需要额外的用户输入位才能显示信息窗口。
我也实现了另一种逻辑:鼠标事件触发标记后,信息窗口出现。仅在用户点击地图时关闭,关闭信息窗口或在不同的标记上运行光标。
观测到的行为:同样的问题和以前一样,只是信息窗口有时会只有光标移动后关闭标记出现。
注:
- 这正好多边形以及标记。
- 仅在Windows中的谷歌浏览器中才会观察到行为。没有其他浏览器已经过测试。
- 此错误已出现在多台计算机上。
- 如果我使用Chrome的开发人员工具,信息窗口总是出现在断点之后。
下面是代码:
var mCurrentOpenInfoWindow;
var mCurrentInfoWindowParent;
function openNewInfoWindowAtLatLon(parent, anchor, infoWindowData) {
if (mCurrentInfoWindowParent !== parent) {
closeCurrentInfoWindow();
var content = createInfoWindowContent(infoWindowData);
if (!mCurrentOpennfoWindow) {
mCurrentOpenInfoWindow = new google.maps.InfoWindow({
content: content,
disableAutoPan: true
});
}
else {
mCurrentOpenInfoWindow.setContent(content);
}
mCurrentOpenInfoWindow.open(mGoogleMap, anchor);
mCurrentInfoWindowParent = parent;
}
}
function closeCurrentInfoWindow() {
if (mCurrentOpenInfoWindow) {
mCurrentOpenInfoWindow.close();
mCurrentInfoWindowParent = null;
}
}
// ... Inside a function which creates an adds a google marker
// in the variable gmarker. displayObject is just an object used to
// keep the info window from opening multiple times for the same
// map item that has been clicked on.
google.maps.event.addListener(gmarker, 'click', function() {
openNewInfoWindowAtAnchor(displayObject, gmarker, infoWindowData);
});
我假设openNewInfoWindowAtAnchor调用openNewInfoWindowAtLatLon?我能看到这种方法吗?我看不到任何明显的错误。 – Swires