标记出现在随机时间

时间:2011-02-23 19:01:01

标签: javascript google-maps

我正在尝试创建一个包含3个不同标记的地图,但目前每个标记都是随机出现的。我认为这是异步的一个问题。

测试网址在此处,地图显示在页面底部: http://www.comehike.com/hikes/hike_carpool.php?hike_id=125

有谁知道我做错了什么?

谢谢, 亚历

1 个答案:

答案 0 :(得分:1)

你的意思是你看到你的标记在不同时间绘制,例如在开始你看到红色,然后是黄色,然后是蓝色。下次加载页面时,您会注意到先显示蓝色标记,然后显示黄色,然后显示红色标记。我的问题是否正确?如果是,那么不关心:)这取决于网络连接,服务器负载等。看看FireBug的Net选项卡,我第一次得到:

enter image description here

所以浏览器在请求了一段时间的marker_sprite后,同时开始请求smile.gif和car.jpg。实际上,您会看到maps.google.com更快地提供了请求(尽管请求稍后启动)。然后你的服务器(comehike.com)处理了对car.jpg的请求(虽然它是大的,1.3kb),然后是smile.gif(虽然它的大小只有174b,它是第一次请求的图像)。

下次我按下F5并从浏览器缓存中获取图像,但浏览器会发送一些请求,看看它们是否真的没有被更改:

enter image description here

注意,浏览器很早就开始请求有关car.jpg的信息,但是由于连接时间和等待结果需要花费很多时间(虽然它被缓存,因此浏览器只是等待确认)。再次,maps.google.com处理请求的速度比comehike.com快。

所以这不是关于ajax,它取决于浏览器何时会请求图像,以及服务器处理它的速度有多快(并且它取决于它的队列等......)。

如果您希望同时显示所有标记,则需要使用CSS Sprites并将所有标记图像合并到一个标记图像中。看看那里(任何文章都很好):

  1. CSS Sprites: What They Are, Why They’re Cool, and How To Use Them
  2. CSS Sprites: Image Slicing’s Kiss of Death
  3. The Mystery Of CSS Sprites: Techniques, Tools And Tutorials
  4. 这样你将有一个图像而不是三个图像,因此当它被加载时,浏览器将显示所有标记(至少你不会注意到标记绘制之间有任何延迟)。希望它能解释和帮助。