From eda47e6fc05037781b2397d3810f5091e12abc9c Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Fri, 29 May 2015 15:10:47 -0400 Subject: [PATCH] Add tile-loaded event. --- src/tiledimage.js | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/tiledimage.js b/src/tiledimage.js index 4fcbab9e..4e68a3ab 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -715,8 +715,6 @@ function updateViewport( tiledImage ) { // Load the new 'best' tile if ( best ) { loadTile( tiledImage, best, currentTime ); - // because we haven't finished drawing, so - tiledImage._needsDraw = true; } } @@ -863,12 +861,8 @@ function updateTile( tiledImage, drawLevel, haveDrawn, x, y, level, levelOpacity var imageRecord = tiledImage._tileCache.getImageRecord(tile.url); if (imageRecord) { tile.loaded = true; - tile.image = imageRecord.getImage(); - - tiledImage._tileCache.cacheTile({ - tile: tile, - tiledImage: tiledImage - }); + var image = imageRecord.getImage(); + setTileLoaded(tiledImage, tile, image); } } @@ -965,17 +959,9 @@ function onTileLoad( tiledImage, tile, time, image ) { } var finish = function() { - tile.loading = false; - tile.loaded = true; - var cutoff = Math.ceil( Math.log( tiledImage.source.getTileSize(tile.level) ) / Math.log( 2 ) ); - tiledImage._tileCache.cacheTile({ - image: image, - tile: tile, - cutoff: cutoff, - tiledImage: tiledImage - }); + setTileLoaded(tiledImage, tile, image, cutoff); }; // Check if we're mid-update; this can happen on IE8 because image load events for @@ -990,6 +976,21 @@ function onTileLoad( tiledImage, tile, time, image ) { tiledImage._needsDraw = true; } +function setTileLoaded(tiledImage, tile, image, cutoff) { + tiledImage.viewer.raiseEvent("tile-loaded", { + tile: tile, + tiledImage: tiledImage, + image: image + }); + tile.loading = false; + tile.loaded = true; + tiledImage._tileCache.cacheTile({ + image: image, + tile: tile, + cutoff: cutoff, + tiledImage: tiledImage + }); +} function positionTile( tile, overlap, viewport, viewportCenter, levelVisibility, tiledImage ){ var boundsTL = tile.bounds.getTopLeft();