wms osm openlayer examples example events event-handling openlayers gis openlayers-3

events - examples - openlayers osm example



Evento OpenLayers 3 catch tiles cargado (2)

¿Cómo puedo ver el evento cargado de mosaicos en OpenLayers 3? En OpenLayers 2 esto podría hacerse capturando el evento "loadend" de la capa base del mapa:

map.baseLayer.events.register(''loadend'' , false, function(){ });


Puede conectar esto de la siguiente manera a partir de ahora, hasta que se agregue algo al núcleo.

tileSource.setTileLoadFunction(( function(){ var numLoadingTiles = 0; var tileLoadFn = tileSource.getTileLoadFunction(); return (tile, src) => { console.log(src); if (numLoadingTiles === 0) { console.log(''loading''); } ++numLoadingTiles; var image = tile.getImage(); image.onload = image.onerror = function(){ --numLoadingTiles; if (numLoadingTiles === 0) { console.log(''idle''); } }; tileLoadFn(tile, src); }; })());

Puede ver todas las clases de origen de mosaico que se pueden usar aquí: http://openlayers.org/en/v3.4.0/apidoc/ol.source.TileImage.html?unstable=true#setTileLoadFunction


tileloadstart , tileloadend y tileloaderror se pueden suscribir a orígenes de teselas desde OpenLayers v3.3.

Puede usar algo similar a lo siguiente:

var tilesLoading = 0, tilesLoaded = 0; tileLayer.getSource().on(''tileloadend'', function () { tilesLoaded++; if (tilesLoading === tilesLoaded) { console.log(tilesLoaded + '' tiles finished loading''); tilesLoading = 0; tilesLoaded = 0; //trigger another event, do something etc... } }); tileLayer.getSource().on(''tileloadstart'', function () { this.tilesLoading++; });