executeViewJob method

  1. @override
Future<ViewJobResult> executeViewJob(
  1. ViewJobRequest viewJobRequest
)
override

Implementation

@override
Future<ViewJobResult> executeViewJob(ViewJobRequest viewJobRequest) async {
  Timing timing = Timing(log: _log, active: true, prefix: "${viewJobRequest.upperLeft}-${viewJobRequest.lowerRight} ");
  RenderContext renderContext = RenderContext(viewJobRequest.upperLeft, renderTheme.levels);
  RenderthemeLevel renderthemeLevel = this.renderTheme.prepareZoomlevel(viewJobRequest.upperLeft.zoomLevel);

  DatastoreReadResult mapReadResult = await datastore.readMapData(viewJobRequest.upperLeft, viewJobRequest.lowerRight);

  if ((mapReadResult.ways.length) > 100000) {
    _log.warning("Many ways (${mapReadResult.ways.length}) in this readResult, consider shrinking your mapfile.");
  }
  timing.lap(50, "${mapReadResult.ways.length} ways and ${mapReadResult.pointOfInterests.length} pois initialized");
  // print(
  //     "pois: ${readResult.pointOfInterests.length}, way: ${readResult.ways.length} for ${viewJobRequest.upperLeft}");
  _datastoreReader.processMapReadResult(renderContext, viewJobRequest.upperLeft, renderthemeLevel, mapReadResult);
  renderContext.reduce();

  await renderContext.initDrawingLayers(symbolCache);

  List<RenderInfo> renderInfos = LayerUtil.collisionFreeOrdered(renderContext.labels, renderContext.projection);
  renderContext.labels.clear();
  renderContext.labels.addAll(renderInfos);
  for (List<RenderInfo> wayList in renderContext.clashDrawingLayer.ways) {
    List<RenderInfo> renderInfos = LayerUtil.collisionFreeOrdered(wayList, renderContext.projection);
    wayList.clear();
    wayList.addAll(renderInfos);
  }

  timing.done(50, "${mapReadResult.ways.length} ways, ${mapReadResult.pointOfInterests.length} pois, ${renderContext}");
  //renderContext.statistics();
  return ViewJobResult(renderContext: renderContext);
}