}
private void fetchAndUpdateTiles(Bbox bounds, final TileFunction<RasterTile> onUpdate) {
// fetch a bigger area to avoid server requests while panning
tileBounds = bounds.scale(3);
GetRasterTilesRequest request = new GetRasterTilesRequest();
request.setBbox(new org.geomajas.geometry.Bbox(tileBounds.getX(), tileBounds.getY(), tileBounds.getWidth(),
tileBounds.getHeight()));
request.setCrs(getLayer().getMapModel().getCrs());
request.setLayerId(getLayer().getServerLayerId());
request.setScale(getLayer().getMapModel().getMapView().getCurrentScale());
GwtCommand command = new GwtCommand(GetRasterTilesRequest.COMMAND);
command.setCommandRequest(request);
RasterCallBack callBack = new RasterCallBack(worldToPan(bounds), onUpdate);
deferred = GwtCommandDispatcher.getInstance().execute(command, callBack);
}