renderBitmap method

  1. @override
void renderBitmap(
  1. MapCanvas mapCanvas,
  2. MarkerContext markerContext
)
override

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;
  }
}