From c296afef173cd6916974a85f1f034233eabb9511 Mon Sep 17 00:00:00 2001 From: Robin Hawkes Date: Tue, 13 Sep 2016 15:23:55 +0100 Subject: [PATCH] Added event to listen for tile list updates on a layer --- examples/tile-events/index.html | 18 ++++++++++++++++++ examples/tile-events/main.css | 4 ++++ examples/tile-events/main.js | 25 +++++++++++++++++++++++++ src/layer/tile/TileLayer.js | 3 +++ 4 files changed, 50 insertions(+) create mode 100644 examples/tile-events/index.html create mode 100644 examples/tile-events/main.css create mode 100644 examples/tile-events/main.js diff --git a/examples/tile-events/index.html b/examples/tile-events/index.html new file mode 100644 index 0000000..1e93bba --- /dev/null +++ b/examples/tile-events/index.html @@ -0,0 +1,18 @@ + + + + + Tile Events ViziCities Example + + + + +
+ + + + + + + + diff --git a/examples/tile-events/main.css b/examples/tile-events/main.css new file mode 100644 index 0000000..4f8aa0b --- /dev/null +++ b/examples/tile-events/main.css @@ -0,0 +1,4 @@ +* { margin: 0; padding: 0; } +html, body { height: 100%; overflow: hidden;} + +#world { height: 100%; } diff --git a/examples/tile-events/main.js b/examples/tile-events/main.js new file mode 100644 index 0000000..bff7594 --- /dev/null +++ b/examples/tile-events/main.js @@ -0,0 +1,25 @@ +// Manhattan +var coords = [40.739940, -73.988801]; + +var world = VIZI.world('world', { + skybox: false, + postProcessing: false +}).setView(coords); + +// Add controls +VIZI.Controls.orbit().addTo(world); + +// CartoDB basemap +var imageTiles = VIZI.imageTileLayer('http://{s}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png', { + attribution: '© OpenStreetMap contributors, © CartoDB' +}); + +imageTiles.addTo(world).then(() => { + console.log('Added image tile layer to world'); +}); + +// Will be emitted every time the image layer updates the tile list +// All tiles in view are sent with each update +imageTiles.on('tilesList', (tiles) => { + console.log(tiles); +}); \ No newline at end of file diff --git a/src/layer/tile/TileLayer.js b/src/layer/tile/TileLayer.js index dd08af5..745fb7c 100644 --- a/src/layer/tile/TileLayer.js +++ b/src/layer/tile/TileLayer.js @@ -126,6 +126,9 @@ class TileLayer extends Layer { this._tilesPicking.add(tile.getPickingMesh()); } }); + + // Emit event notifying of new tiles + this.emit('tilesList', this._tileList.map((tile) => tile._tile)); } // Works out tiles in the view frustum and stores them in an array