帮我了解谷歌地图如何显示图像?

时间:2010-06-19 11:18:36

标签: ajax google-maps

随着firebugs网络标签打开我说放大和缩小谷歌地图,我发现它要求png图像。

好的,我理解我们可以使用Ajax请求图像。可是等等 ?我总是习惯请求html,jsox,txt和xml。形象........对我来说很奇怪?有人可以详细说明一下吗?

此外,我想知道是否下载了文本,我们将其添加到某个DOM元素并显示出来。如何从ajax重试图像?

任何帮助或指针都会有很大帮助:)

1 个答案:

答案 0 :(得分:1)

GMaps不会使XMLHttpRequests获取图像。他们改为使用通过javascript注入的普通<img />元素。

然后他们使用“onload”和“onerror”事件来检测图像是否正确加载。

如果图像超时,他们会重试下载图像。这可以通过设置一个计时器来实现,一旦它到期,重新设置图像的src属性。

var tile = document.createElement('img');
var url = 'http://sometilehost/X.Y.Z.png';
var downloadTimeout = 10000;    // Retry in 10 seconds

// Tile downloaded successfully
tile.onload = function (e) {
    window.clearTimeout(tile.downloadTimer);
    alert('tile downloaded');
};
// The tile couldn't be downloaded. 404, 503 ...
tile.onerror = function (e) {
    window.clearTimeout(tile.downloadTimer);
    alert('tile not downloaded');
};
// This will fire if the tile doesn't download in time
tile.downloadTimer = window.setTimeout(function () {
    tile.src = url; // Start the download again
}, downloadTimeout);
tile.src = url;