getMarkersToPaint method

  1. @override
List<Marker> getMarkersToPaint(
  1. BoundingBox boundary,
  2. int zoomLevel
)
override

returns the markers to draw for the given boundary. If this method needs more time return an empty list and call setRepaint() when finished.

Implementation

@override
List<Marker> getMarkersToPaint(BoundingBox boundary, int zoomLevel) {
  if (zoomLevel < minZoomLevel || zoomLevel > maxZoomLevel) {
    // clear cache to avoid false positives at [isTapped]
    _previousMarkers = [];
    _previousZoomLevel = -1;
    _previousBoundingBox = null;
    return [];
  }
  BoundingBox extended = boundary.extendMeters(extendMeters);
  if (_previousBoundingBox != null &&
      _previousBoundingBox!.containsBoundingBox(boundary) &&
      zoomLevel == _previousZoomLevel) {
    return _previousMarkers;
  }
  retrieveMarkersFor(extended, zoomLevel);
  _previousBoundingBox = extended;
  _previousZoomLevel = zoomLevel;
  List<Marker> markersToDraw = _markers
      .where((marker) => marker.shouldPaint(extended, zoomLevel))
      .toList();
  _previousMarkers = markersToDraw;
  return markersToDraw;
}