2011-07-04 96 views
0

我想更改鼠标悬停事件上的标记图像。眼下,重要的一点是这样的:谷歌地图Api V3 - 更改MarkerImage的URL时显着闪烁

google.maps.event.addListener(marker, "mouseover", function (event) 
{ 
    this.set('icon', 'http://google.com/mapfiles/ms/micons/yellow-dot.png'); 
}); 

google.maps.event.addListener(marker, "mouseout", function (event) 
{ 
    this.set('icon', 'http://google.com/mapfiles/ms/micons/red-dot.png'); 
}); 

有闪烁,当我将鼠标放在第一次,我想这是因为地图加载从URL的新形象。

是否有任何方法预加载黄色和红色桨标记并将它们存储在缓存中?

回答

2

Preload marker images for Google Maps,你可以尝试把图像的URL在<div>标签与CSS display设置为none到那种傻瓜浏览器进入预加载它。

可能还有其他方式(HTML5清单?),但这似乎是一个快速简单的解决方案。 (如果它不起作用,那么做和撤消并不需要太多的努力,如果你尝试它,我很想知道它是否有效或不适合你。)

在你的情况,你可以做一个快速和肮脏的测试它通过包括在专页上:

<div style="display:none"> 
    <img alt="" src="http://google.com/mapfiles/ms/micons/yellow-dot.png"/> 
</div> 
+0

嗨,我试着按照你的建议解决方案,图像闪烁一次。它有一个改进,因为没有它会有一个暂停,没有标记会显示。 – lowzhien

+0

虽然不完美。标记图像加载完成后,转换更加顺畅。 – lowzhien

+0

任何人都会发现这个问题:斯图尔特库萨克的答案解决了我的问题比建议的解决方案好得多(阅读:完全解决)。 – DrColossos

6

我不知道这是否解决方案将满足您的特定问题,但尝试禁用的“优化”属性标记:

var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(lat, long), 
    icon: markerIcon, 
    optimized: false 
}); 

这在IE中固定一个问题,我在哪里,在某些变焦水平徘徊标记会产生轻弹效果。

+0

这实际上修复了所有浏览器中的proplem。阅读[文档内部](https://developers.google.com/maps/documentation/javascript/reference?hl=de#MarkerOptions)为什么'优化:false'在这种情况下起作用 – DrColossos