3

我已经构建了一个谷歌地图,其中标记在某些外部链接的翻转上反弹。我创建了这个功能的短反弹标记:谷歌地图 - 标记在反弹之前闪烁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/

回答

7

我也遇到了这个问题。原来的设置MarkerOptionsoptimized: falsedraggable: true将停止标记闪烁之前,他们的动画。

非优化标记:

// Create a non-optimized marker 
var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(39.107182, -123.501868), 
    map: map, 
    optimized: false // stops the marker from flashing 
}); 

// Bounce once 
marker.setAnimation(google.maps.Animation.BOUNCE); 
marker.setAnimation(null); 

一个可拖动的标记:

// Create a draggable marker 
var draggableMarker = new google.maps.Marker({ 
    position: new google.maps.LatLng(39.107182, -123.501868), 
    map: map, 
    draggable: true // stops the marker from flashing 
}); 

// Bounce once 
draggableMarker.setAnimation(google.maps.Animation.BOUNCE); 
draggableMarker.setAnimation(null); 

如果你看一看的Google example,你会发现它们设置draggable: true

+1

就是这样,谢谢!你会认为闪烁表示缺少优化,但你去... – melat0nin 2012-01-27 15:21:36

+1

解决方法是不完美的,仍然不起作用:( – 2013-07-12 12:12:46

+0

此解决方案是从18个月前。事情可能已经改变了新Google Maps API的版本。如果您找到解决方案,请回报! – lazd 2013-07-15 04:47:10