From f8c57df2919258464d6c6ce9b17fba6d0cc8ce06 Mon Sep 17 00:00:00 2001 From: sttawm Date: Fri, 17 Jul 2015 13:07:07 -0700 Subject: [PATCH 1/2] add a 'loading' event to a layer --- src/Layer.js | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/Layer.js b/src/Layer.js index 503fc4c..88d5f09 100644 --- a/src/Layer.js +++ b/src/Layer.js @@ -248,6 +248,8 @@ ms.layer = function(load, unload) { // flush the cache, clearing no-longer-needed tiles cache.flush(); + checkIsLoading(); + // dispatch the move event layer.dispatch({type: "move"}); } @@ -265,6 +267,17 @@ ms.layer = function(load, unload) { } } + var checkIsLoading = (function() { + var wasLoading; + return function() { + var isLoading = layer.isLoading(); + if (isLoading !== wasLoading) { + wasLoading = isLoading; + layer.dispatch({type: "loading", loading: isLoading}); + } + }; + })(); + layer.map = function(x) { if (!arguments.length) return map; if (map) { @@ -279,7 +292,7 @@ ms.layer = function(load, unload) { if (map) { map.svgContainer().appendChild(container); if (layer.init) layer.init(container); - map.on("move", move).on("resize", move); + map.on("move", move).on("resize", move) move(); } return layer; @@ -308,6 +321,16 @@ ms.layer = function(load, unload) { return layer; }; + layer.isLoading = function() { + var tiles = cache.locks(); + for (key in tiles) { + var tile = tiles[key]; + if (!tile.ready) + return true; + } + return false; + }; + layer.transform = function(x) { if (!arguments.length) return transform; transform = x; @@ -336,7 +359,7 @@ ms.layer = function(load, unload) { }; layer.dispatch = ms.dispatch(layer); - layer.on("load", cleanup); + layer.on("load", cleanup).on("load", checkIsLoading); return layer; }; From 6ef639f3654b07aabefbbd9ef3ddcc2f5fc69140 Mon Sep 17 00:00:00 2001 From: sttawm Date: Fri, 17 Jul 2015 13:09:22 -0700 Subject: [PATCH 2/2] fix missing semicolon --- src/Layer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Layer.js b/src/Layer.js index 88d5f09..0ba13cf 100644 --- a/src/Layer.js +++ b/src/Layer.js @@ -292,7 +292,7 @@ ms.layer = function(load, unload) { if (map) { map.svgContainer().appendChild(container); if (layer.init) layer.init(container); - map.on("move", move).on("resize", move) + map.on("move", move).on("resize", move); move(); } return layer;