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