Google maps 如何预加载图像,使其';在页面的其他地方重新加载速度更快,这是一种好的做法吗?

Google maps 如何预加载图像,使其';在页面的其他地方重新加载速度更快,这是一种好的做法吗?,google-maps,preload,image-loading,Google Maps,Preload,Image Loading,事情是这样的:我有一张谷歌地图,上面有很多标记 问题是地图会加载,并在一段时间内保持为空,然后才显示标记。标记是定制的PNG 我的想法是“预加载”它们(不确定是不是正确的单词),这样它们几乎与地图同时出现 到目前为止,我所做的是在display:none页面的前面,在地图之外添加我在地图上使用的相同图像 我不确定,但似乎地图和图像显示之间的时间缩短了 这是最好的方法吗?这是一种好的做法吗?您可以使用“精灵”,即在单个png上收集单独的图像。这样做的优点是只需要1个荷载,即较少的单独荷载。谷歌GW

事情是这样的:我有一张谷歌地图,上面有很多标记

问题是地图会加载,并在一段时间内保持为空,然后才显示标记。标记是定制的PNG

我的想法是“预加载”它们(不确定是不是正确的单词),这样它们几乎与地图同时出现

到目前为止,我所做的是在
display:none页面的前面,在地图之外添加我在地图上使用的相同图像

我不确定,但似乎地图和图像显示之间的时间缩短了

这是最好的方法吗?这是一种好的做法吗?

您可以使用“精灵”,即在单个png上收集单独的图像。这样做的优点是只需要1个荷载,即较少的单独荷载。谷歌GWT大力推广这项技术(即图像包)


这种技术的价值随着需要加载的离散图像数量的增加而增加:独立图像越多,加载它们所需的时间就越长。

根据我对大多数现代浏览器的回忆,图像总是加载一次(假设图像的src是相同的)。我猜你的意思是在地图加载之前加载它们

在我看来,这并不重要。与地图图像本身相比,标记应该相对较轻,没有地图我就不能真正使用它们

如果您认为它可以改善您的用户体验,那么我认为这是一个很好的实践,但是我会尝试以更干净的方式来实现它们,可能是在页面加载的早期调用ajax


查看不要使用
显示:无
进行预加载。由于设置为
display:none
的元素不会呈现其任何物理属性,因此浏览器在显示之前不会下载该元素

另一种方法是使用
可见性:hidden
,但您可能会遇到执行几乎相同操作的用户代理<代码>可见性:隐藏
要求浏览器计算图像的长方体模型,这要求加载图像(以获取尺寸)。不过,我认为这在IE6中不起作用

最后一种技术(也是我最喜欢的)是直接在
标记之前创建一个div。用
左键将其置于绝对位置:-9999999 px;顶部:-9999999像素
。浏览器被迫渲染图像(并因此加载图像),并且没有凌乱的Javascript需要处理

现在,要将这一点与您的问题结合起来,请将谷歌地图的代码放在“preload div”之后。在运行创建地图的代码之前,浏览器将被迫加载图像。这应该能解决你的问题


希望这有帮助

你确定延迟不仅仅是谷歌地图绘制你的标记吗?它需要计算很多:从lat到y px,lng到x px,偏移它们,设置它们的样式,等等。不,因为我还设法在标记上显示一个数字,这些数字与地图同时出现在正确的位置。没错,我没有资源在特定项目上实现sprite,但我同意这会更好。