renderBitmap method
renders the bitmap portion of this marker. This method is called by render() which also call the render method for the caption
Implementation
@override
void renderBitmap(MapCanvas mapCanvas, MarkerContext markerContext) {
if (_zoom == markerContext.zoomLevel) {
mapCanvas.drawPathText(
caption,
_lineString!,
markerContext.mapCenter,
getStrokePaint(markerContext.zoomLevel),
getTextPaint(markerContext.zoomLevel),
maxTextWidth);
mapCanvas.drawPathText(
caption,
_lineString!,
markerContext.mapCenter,
getFillPaint(markerContext.zoomLevel),
getTextPaint(markerContext.zoomLevel),
maxTextWidth);
} else {
_lineString = LineString();
Mappoint? prev = null;
path.forEach((latLong) {
Mappoint newMappoint = markerContext.projection.latLonToPixel(latLong);
if (prev != null) {
LineSegment segment = LineSegment(prev!, newMappoint);
_lineString!.segments.add(segment);
}
prev = newMappoint;
});
ParagraphEntry entry = ParagraphCache().getEntry(
caption,
getTextPaint(markerContext.zoomLevel),
getStrokePaint(markerContext.zoomLevel),
maxTextWidth);
_lineString =
WayDecorator.reducePathForText(_lineString!, entry.getWidth());
// _lineString!.segments.forEach((element) {
// print(
// "Segment ${element.end.x - element.start.x} / ${element.end.y - element.start.y} for textWidth $textWidth - $element $caption");
// });
mapCanvas.drawPathText(
caption,
_lineString!,
markerContext.mapCenter,
getStrokePaint(markerContext.zoomLevel),
getTextPaint(markerContext.zoomLevel),
maxTextWidth);
mapCanvas.drawPathText(
caption,
_lineString!,
markerContext.mapCenter,
getFillPaint(markerContext.zoomLevel),
getTextPaint(markerContext.zoomLevel),
maxTextWidth);
_zoom = markerContext.zoomLevel;
}
}