createUserMarker static method
Future<Marker>
createUserMarker({
- required double dimension,
- required LatLng latLng,
- Color? defaultUserMarkerColor,
- BitmapDescriptor? customUserMarker,
Implementation
static Future<Marker> createUserMarker({
required double dimension,
required LatLng latLng,
Color? defaultUserMarkerColor,
BitmapDescriptor? customUserMarker,
}) async {
BitmapDescriptor? icon;
if (customUserMarker == null) {
final defaultColor = defaultUserMarkerColor ?? ColorName.blue;
final pictureRecorder = PictureRecorder();
final canvas = Canvas(pictureRecorder);
final largeCircle = Paint()
..style = PaintingStyle.fill
..color = defaultColor.withOpacity(0.2);
final middleLargeCircle = Paint()
..style = PaintingStyle.fill
..color = defaultColor.withOpacity(0.4);
final smallCircle = Paint()
..style = PaintingStyle.fill
..color = defaultColor;
final whiteCircle = Paint()
..style = PaintingStyle.fill
..color = ColorName.white;
final radius = dimension * 0.5;
canvas
..drawCircle(Offset(radius, radius), radius, largeCircle)
..drawCircle(Offset(radius, radius), radius * 0.75, middleLargeCircle)
..drawCircle(Offset(radius, radius), radius * 0.5, smallCircle)
..drawCircle(Offset(radius, radius), radius * 0.20, whiteCircle);
final image = await pictureRecorder.endRecording().toImage(
dimension.toInt(),
dimension.toInt(),
);
final data = await image.toByteData(format: ImageByteFormat.png);
icon = BitmapDescriptor.fromBytes(data!.buffer.asUint8List());
} else {
icon = customUserMarker;
}
return Marker(
markerId: _userMarkerId,
position: latLng,
icon: icon,
);
}