createClusterMarker static method
Future<Uint8List>
createClusterMarker({
- required BuildContext context,
- required double dimension,
- required int clusterCount,
- required Color markerColor,
Implementation
static Future<Uint8List> createClusterMarker({
required BuildContext context,
required double dimension,
required int clusterCount,
required Color markerColor,
}) async {
final devicePixelRatio = View.of(context).devicePixelRatio;
final pictureRecorder = PictureRecorder();
final canvas = Canvas(pictureRecorder);
final paint = Paint()
..style = PaintingStyle.fill
..color = markerColor;
final radius = dimension * 0.5;
canvas.drawCircle(Offset(radius, radius), radius, paint);
final remainderOfDivision = clusterCount % _multipleOfMarkers;
final clusterText = remainderOfDivision > 0 && clusterCount > _multipleOfMarkers
? '${clusterCount - remainderOfDivision}+'
: '$clusterCount';
final textPainter = TextPainter(textDirection: TextDirection.ltr)
..text = TextSpan(
text: clusterText,
style: TextStyle(
color: ColorName.white,
fontWeight: FontWeight.w600,
fontSize: 12 * devicePixelRatio,
),
)
..layout();
textPainter.paint(
canvas,
Offset(
(dimension - textPainter.width) / 2,
(dimension - textPainter.height) / 2,
),
);
final image = await pictureRecorder.endRecording().toImage(
dimension.toInt(),
dimension.toInt(),
);
final data = await image.toByteData(format: ImageByteFormat.png);
return data!.buffer.asUint8List();
}