executeJob method

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

Executes a rendering job to generate a tile bitmap.

Processes the job request and generates the corresponding tile image based on the renderer's data source and configuration.

jobRequest Request containing tile coordinates and rendering parameters Returns JobResult with tile bitmap or null if no data available Throws exception if rendering fails (e.g., server unreachable)

Implementation

@override
Future<JobResult> executeJob(JobRequest job) async {
  var pictureRecorder = ui.PictureRecorder();
  var canvas = ui.Canvas(pictureRecorder);
  var paint = ui.Paint();
  Random random = Random();
  double tileSize = MapsforgeSettingsMgr().tileSize;
  paint.strokeWidth = (random.nextDouble() * 5) + 1;
  paint.color = ui.Color(0xff000000 + random.nextInt(0xffffff));
  paint.isAntiAlias = true;

  canvas.drawLine(ui.Offset.zero, ui.Offset(tileSize, tileSize), paint);
  canvas.drawLine(ui.Offset(tileSize, 0), ui.Offset(0, tileSize), paint);

  ui.ParagraphBuilder builder = ui.ParagraphBuilder(ui.ParagraphStyle(fontSize: 10.0))
    ..pushStyle(ui.TextStyle(color: Colors.black87))
    ..addText("${job.tile}");
  canvas.drawParagraph(builder.build()..layout(ui.ParagraphConstraints(width: tileSize.toDouble())), const Offset(0, 0));

  var pic = pictureRecorder.endRecording();
  TilePicture tileBitmap = TilePicture.fromPicture(pic);
  return JobResult.normal(tileBitmap);
}