executeJob method

  1. @override
Future<JobResult> executeJob(
  1. Job job
)
override

The rendering job to execute.

@returns the tilebitmap or null if no data available for this tile @returns an exception e.g. if the server is not reachable

Implementation

@override
Future<JobResult> executeJob(Job job) async {
  Uri uri = Uri.parse(
      "$uriPrefix/${job.tile.zoomLevel}/${job.tile.tileX}/${job.tile.tileY}.png");
  HttpClientRequest request = await _httpClient.getUrl(uri);
  //_log.info("GET >> " + uri.toString());
  HttpClientResponse response = await request.close();

  final _Uint8ListBuilder builder = await response.fold(
    new _Uint8ListBuilder(),
    (_Uint8ListBuilder buffer, List<int> bytes) => buffer..add(bytes),
  );
  final Uint8List content = builder.data;

  var codec = await ui.instantiateImageCodec(content.buffer.asUint8List());
  // add additional checking for number of frames etc here
  var frame = await codec.getNextFrame();
  ui.Image img = frame.image;

  TileBitmap result = FlutterTileBitmap(img);
  return JobResult(result, JOBRESULT.NORMAL);
}