2014-01-30 68 views
-1

我在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); 
}); 
+1

我假设openNewInfoWindowAtAnchor调用openNewInfoWindowAtLatLon?我能看到这种方法吗?我看不到任何明显的错误。 – Swires

回答

0

听起来像是要连接多个点击听众相同的标记。

您可以在devtools上google.maps.event.addListener(gmarker, 'click', function()断点,看看你打它不止一次每个标记?

您也可以尝试使用google.maps.event.addListenerOnce(gmarker, 'click', function()但我怀疑,这将解决您的问题。

有效的复制将有助于找出错误的来源。

+1

这不是一个答案。 – geocodezip