render method

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

Renders this object. Called by markerPainter

Implementation

@override
void render(MapCanvas mapCanvas, MarkerContext markerContext) {
  if (_zoom == markerContext.zoomLevel) {
    (mapCanvas as FlutterCanvas).uiCanvas.save();
    mapCanvas.uiCanvas.translate(_leftUpperX - markerContext.mapCenter.x,
        _leftUpperY - markerContext.mapCenter.y);
    //if (fill != null) markerCallback.renderPath(mapPath!, fill!);
    mapCanvas.drawPath(mapPath!, getStrokePaint(markerContext.zoomLevel));
    mapCanvas.uiCanvas.restore();
  } else {
    mapPath?.clear();
    _points.clear();
    _zoom = markerContext.zoomLevel;
    path.forEach((latLong) {
      Mappoint mappoint = markerContext.projection.latLonToPixel(latLong);
      double y = mappoint.y - markerContext.mapCenter.y;
      double x = mappoint.x - markerContext.mapCenter.x;

      _points.add(mappoint);

      if (mapPath!.isEmpty())
        mapPath!.moveTo(x, y);
      else
        mapPath!.lineTo(x, y);
    });
    _leftUpperX = markerContext.mapCenter.x;
    _leftUpperY = markerContext.mapCenter.y;
    mapCanvas.drawPath(mapPath!, getStrokePaint(markerContext.zoomLevel));
  }
}