The load-on-demand mechanism might generate errors when
the map cannot be entirely loaded due to memory problems, absence
of data, loss of connection to a server and so on. Graphic applications
must catch these errors to inform the user that the map being viewed
is not complete.
To be notified of these events, and any other events
related to load-on-demand, you can set a
TileListener
to
an instance of the
IlvTileController class. This listener is notified of all changes
to the tiles, for example, the beginning or end of loading, moving
tiles into the cache, or out of the cache for reuse, loading errors,
and so on.
The following example displays all the events related
to load-on-demand:
lodLayer.getTileController().addTileListener(new TileListener() {
public void tileChanged(TileEvent e) {
System.err.print(e);
}
});
By default, the tile controller displays a message on
the screen if an error occurs while a tile is being loaded. You can
deactivate this behavior using the following method:
The different types of events sent to the tile listeners
are:
TILE_LOADED Triggered when a tile has been loaded into memory.
TILE_CACHED Triggered when a tile that is no longer being used
is stored in the cache.
TILE_RETRIEVED Triggered when the counter of a tile stored in the
cache is incremented again. The tile can no longer be unloaded.
ERROR Triggered when an error occurs while a tile is being
processed. In this case, the
getThrowable method of
TileEvent
allows
you to know the exception or the error that caused the problem.
CONTROLLER_DISPOSED Triggered when the tile controller is deactivated.
For example, if you remove its associated tiled layer from a manager.
NO_CHANGE Triggered when the last event in a series of events
is processed.
When an event in a view causes an action to be performed
on a tile, the tile controller notifies the tile listener of the action.
If this event provokes a series of transitional events, these are
transmitted to the listener as a group. Therefore, modifying a scale
factor can cause new tiles to be loaded and other tiles to be cached.
Grouping events allows an action to be performed only when all the
transitional events it causes are completed. The isAdjusting()
method
of the class TileEvent
returns true
if
the event is part of a series of events. The NO_CHANGE
event
is sent once the last event in a series is processed and the isAdjustmentEnd()
method
returns true
.