executeViewJob method
Future<ViewJobResult>
executeViewJob(
- 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.lap(50,
"${mapReadResult.ways.length} ways, ${mapReadResult.pointOfInterests.length} pois, ${renderContext}");
//renderContext.statistics();
return ViewJobResult(renderContext: renderContext);
}