我已经构建了一个谷歌地图,其中标记在某些外部链接的翻转上反弹。我创建了这个功能的短反弹标记:谷歌地图 - 标记在反弹之前闪烁onmouseover
function makeBounce(marker) {
marker.setAnimation(google.maps.Animation.BOUNCE);
setTimeout(function(){ marker.setAnimation(null); }, 750);
}
,我用这个来执行它:
<a onmouseover="javascript:map.panToBounds(bounds);makeBounce(markersArray[1]);" href="javascript:google.maps.event.trigger(markersArray[1], 'click');">Marker name</a>
什么我注意到的是,标记反弹之前,他们闪烁。它几乎察觉不到,但它足以令人讨厌(尤其是因为Google自己的博客文章启动弹跳标记非常流畅:http://googlegeodevelopers.blogspot.com/2010/12/map-markers-they-move.html)。
我在这里创建了一个JS小提琴演示它:http://jsfiddle.net/RmDuz/(滚动蓝色链接查看问题)。
我已经在FF9和Chrome 16中试过了,问题在于两者。
有什么想法?
问题似乎是标记图像在反弹之前动态(重新)加载,因为在Chrome中,我在标记再次出现之前看到“无图像”框,然后反弹。
编辑:我改变了代码,以使用地图API监听器,而不是一个JavaScript函数,在希望的API代码可能会有点更高效,更无须欢喜:(
google.maps.event.addListener(marker, 'dblclick', (function(marker, i) {
return function() {
marker.setAnimation(google.maps.Animation.BOUNCE);
setTimeout(function(){ marker.setAnimation(null); }, 750);
}
})(marker, i));
我使用DBLCLICK,因为我不想鼠标悬停,这意味着动画被触发时的标记滚过时的外部链接都翻了,我只希望动画触发:
<a onmouseover="javascript:google.maps.event.trigger(markersArray[1], 'dblclick');">Link name</a>
我已经更新了JS小提琴以反映这一点:http://jsfiddle.net/RmDuz/1/
就是这样,谢谢!你会认为闪烁表示缺少优化,但你去... – melat0nin 2012-01-27 15:21:36
解决方法是不完美的,仍然不起作用:( – 2013-07-12 12:12:46
此解决方案是从18个月前。事情可能已经改变了新Google Maps API的版本。如果您找到解决方案,请回报! – lazd 2013-07-15 04:47:10