I'm new in Flutter, and I am trying to create a custom marker for google maps. So far i have been able to create a circle with stroke, background color and icon from a canvas, but I need to add a background image from assets instead of the icon. This is my code:
Future<BitmapDescriptor> createCustomMarkerBitmap({IconData iconData, Color iconColor, Color fillColor, Color strokeColor}) async {
ByteData data = await rootBundle.load('assets/images/iconTry.png');
Uint8List lst = new Uint8List.view(data.buffer);
Codec codec = await ui.instantiateImageCodec(lst);
FrameInfo frame = await codec.getNextFrame();
final pictureRecorder = PictureRecorder();
final canvas = Canvas(pictureRecorder);
paintCircleFill(canvas, fillColor);
paintCircleStroke(canvas, strokeColor);
paintIcon(canvas, iconColor, iconData);
paintBackgroundImage(canvas, frame.image);
final picture = pictureRecorder.endRecording();
final image = await picture.toImage(markerSize, markerSize);
final bytes = await image.toByteData(format: ImageByteFormat.png);
BitmapDescriptor.fromBytes(bytes.buffer.asUint8List());
}
void paintCircleFill(Canvas canvas, Color color) {
final paint = Paint()
..style = PaintingStyle.fill
..color = color;
canvas.drawCircle(Offset(circleOffset, circleOffset), innerRadius, paint);
}
void paintCircleStroke(Canvas canvas, Color color) {
final paint = Paint()
..style = PaintingStyle.stroke
..color = color
..strokeWidth = (stroke);
canvas.drawCircle(Offset(circleOffset, circleOffset), outerRadius, paint);
}
void paintIcon(Canvas canvas, Color color, IconData iconData) {
final textPainter = TextPainter(textDirection: TextDirection.ltr);
textPainter.text = TextSpan(
text: String.fromCharCode(iconData.codePoint),
style: TextStyle(
letterSpacing: 0.0,
fontSize: iconSize,
fontFamily: iconData.fontFamily,
color: color,
));
textPainter.layout();
textPainter.paint(canvas, Offset(iconOffset, iconOffset));
}