2012-08-29 70 views
1

我已经遇到了令人讨厌的烦恼问题。我开始测试我的谷歌地图代码与较慢的互联网连接,它不再像它想象的那样工作了。谷歌地图v3:如何强制重新加载瓷砖

的问题是,我听"tilesloaded"事件时,Im做在地图上的动画,但由于连接速度慢一些瓷砖可能会挂起和犯规负荷..还有必应地图的瓦灰中,我的程序不会继续,因为它等待它被加载。

我用Firebug的控制台来赶上错误,并说:

图片损坏或截断:https://mts0.googleapis.com/[email protected]&src=apiv3&hl=fi-FI&x=18706&y=8527&z=15&s=Galil&style=api%7Csmartmaps

我是粘贴到浏览器,并从那里找到了丢失的平铺图像。帮助它!它的存在,但有时犯规负载:)

所以现在的问题是,我怎么能在一段时间后强制失踪瓷砖的重装或全部地砖,据我知道有这将触发没有这样的事件如果一些瓷砖不能加载?并且似乎控制台上出现的错误并不总是给出。我也尝试使用谷歌地图的"idle"事件,但它不会等待要加载的贴图,并会使程序继续为滞后。 (不是什么我想要的。)

我也使用google.maps.event.trigger(my_map, 'resize');,但它似乎有帮助。

编辑:

刷新整个页面是不是一种选择,因为我会失去我的变量等的价值与该缓慢的加载难以测试,但发生平移,以在地图上的某些特定点,这是所以当远远需要重新加载瓷砖。

任何想法? Thnx提前!

回答

2

无法访问V3 API中的基础地图,因此您只需销毁地图对象(map = null)并创建一个新的地图对象。已成功下载的切片仍应位于浏览器的缓存中。

+0

最后我做它加载某些地区方法在实际尝试向用户显示它之前映射到缓存(这种方式如果在向用户显示缓存的地图部分时只有一个图块挂起,他/她将耐心等待其加载,并且似乎拖动来回地图会使第二轮出现缺失的图块) - 我没有使用map = null的东西,因为它会太严格我的需求考虑程序状态。 +1提及缓存和空情况! :) thnx! –

0

首先,这听起来像一个错误(如果超时,API应该重试提取磁贴)。请在issue tracker上提交。

您可能会触发一次刷新,方法是将更改通知给mapTypeId属性。

google.maps.event.notify(map, 'mapTypeId')

+0

我得到google.maps.event.notify不是函数 –

3

在JavaScript地图上浏览器调整大小响应,并加载缺砖,因此,所有你需要的是火浏览器事件“调整”

var evt = document.createEvent('UIEvents'); 
evt.initUIEvent('resize', true, false,window,0); 
window.dispatchEvent(evt); 
相关问题