diff --git a/vendor/clouds3d.js b/vendor/clouds3d.js index 7f76261..7506955 100644 --- a/vendor/clouds3d.js +++ b/vendor/clouds3d.js @@ -318,8 +318,11 @@ function fetchTileImage(tileX, tileY) { img.crossOrigin = 'anonymous'; img.onload = function() { resolve(img); }; img.onerror = function() { reject(new Error('tile fetch failed')); }; - // Carto/OSM-style format: {z}/{x}/{y}.png - img.src = GROUND_TILE_URL + GROUND_TILE_Z + '/' + tileX + '/' + tileY; + // Carto/OSM-style format: {z}/{x}/{y}.png with a per-tile cache + // buster to avoid any browser-cached 404s or CORS rejections + // from previous failed loads. + img.src = GROUND_TILE_URL + GROUND_TILE_Z + '/' + tileX + '/' + tileY + + '?v=' + Date.now() + '_' + Math.floor(Math.random() * 1e6); }); } @@ -397,8 +400,7 @@ function drawTileAt(lng, perp, dx, dz, centerTileX, centerTileY) { mirrorLabel('x=' + tileX, canvasX + GROUND_TILE_SIZE - 12, canvasY + GROUND_TILE_SIZE - 12, 'left'); return true; - }).catch(function(err) { - console.warn('[clouds3d] tile fetch failed', tileX, tileY, err && err.message); + }).catch(function() { // On failure draw a neutral gray so the gap is at least // not the bright fog colour groundCtx.fillStyle = '#3a4458'; @@ -450,7 +452,6 @@ function rebuildGroundMosaic(centerTileX, centerTileY) { // smooth parallax within the loaded content. function refreshGroundMosaic() { if (!groundCtx) return; - console.log('[clouds3d] refreshGroundMosaic center', groundCenterTile); var fdx = (window.__flightDir && window.__flightDir.dx) || 0; var fdz = (window.__flightDir && window.__flightDir.dz) || 1; var camX = (fdx !== 0) ? groundCameraX * fdx : 0;