我使用谷歌地图v3与标记clusterer v3显示1000年的标记。我也有一个侧面板,列出了每个标记的标题。当用户将鼠标悬停在面板上的标题上时,我会为相应的标记设置动画,并停止在鼠标悬停时进行动画制作。标记消失后动画
当标记不在集群中时,这可以正常工作。标记位于群集中时出现问题。
如果标记位于簇中,首先将标记的地图对象从null(之前由markerClusterer设置,以便将标记放入簇中时将其隐藏)更改为我的地图对象,然后为标记设置动画。再次,这工作。这是鼠标,我遇到了我的问题。
在mouseout上我将标记动画设置为null,然后将标记的地图对象设置为null。这是你所期望的(隐藏标记),但是我不能让标记在任何后续的悬停事件中再次显示。标记仍然存在于适当的簇对象内,我可以调用setMap()来设置标记的地图属性,但标记仍然不会显示在地图上。下面是相关代码:
if (event.type === 'mouseover' || event.type === 'mouseenter') {
if (!marker.getMap()) { //marker is in a cluster
inCluster = true;
marker.setMap(map)
} else {
inCluster = false
};
marker.setAnimation(google.maps.Animation.BOUNCE);
} else {
marker.setAnimation(null);
if (inCluster == true) { //hide the clusterized marker
marker.setMap(null)
}
};
如果我注释掉两个setAnimation()调用,则代码将工作,并预期可显示标记,然后隐藏(只是没有动画)。此外,当我使用控制台玩耍时,我可以将标记显示在群集外,然后我可以对它进行动画处理,然后我可以对其进行动画处理,然后我可以重新将它隐藏起来,一遍又一遍。但是,如果我在去除动画标记之前调用setMap(null),那么我就会碰到我的bug。
因此,只有在调用setMap(null)之前动画没有停止时,问题才存在。我试着设置一个定时器,让动画在调用setMap之前停止几百毫秒,这有时会起作用,但有时会触发其他更糟的行为。
任何帮助解决此问题将不胜感激(并热切接受)!
谢谢丹, 这个错误已经被报告给谷歌地图api团队(问题#167)。你可以在这里找到http://code.google.com/p/google-maps-utility-library-v3/issues/detail?id=167&colspec=ID%20Type%20Status%20Priority%20Fixed%20Owner%20Summary%20Stars – 2012-04-22 15:47:56
这仍然发生在api v3,(3.16)!!怎么了? – Nick 2014-07-22 16:35:52