Google Map自定义带文本标签Marker在部分设备显示倒置问题
Flutter Google Map自定义Marker文本标签倒置问题
我在Flutter中开发Google Map自定义Marker时,发现文本标签显示倒置。该问题仅出现在安卓模拟器及OPPO、VIVO、小米等部分国产手机上,iOS模拟器、iPhone及三星设备测试无异常。此问题出现在重新启用一个2-3个月未维护的旧项目后,此前显示正常。
测试代码
import 'dart:ui' as ui; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return const MaterialApp(home: MyPage()); } } class MyPage extends StatefulWidget { const MyPage({Key? key}) : super(key: key); @override State<MyPage> createState() => _MyPageState(); } class _MyPageState extends State<MyPage> { Map<String, Marker> markers = <String, Marker>{}; _onMapCreate(GoogleMapController controller) async { markers['test2'] = Marker( markerId: const MarkerId('test'), zIndex: 8, icon: await iconMarker(), position: const LatLng(14.0, 101.0), ); setState(() {}); } @override Widget build(BuildContext context) { return GoogleMap( markers: Set<Marker>.of(markers.values), initialCameraPosition: const CameraPosition(target: LatLng(14.7, 100.7), zoom: 5), onMapCreated: _onMapCreate, ); } } Future<BitmapDescriptor> iconMarker() async { ui.PictureRecorder recorder = ui.PictureRecorder(); Canvas canvas = Canvas(recorder); canvas.drawRect(const Rect.fromLTWH(0, 0, 300, 100), Paint()..color = Colors.orange); TextSpan title = const TextSpan(style: TextStyle(fontSize: 70), text: "Thailand"); TextPainter(text: title, textDirection: TextDirection.ltr) ..layout() ..paint(canvas, const Offset(10, 10)); ui.Picture p = recorder.endRecording(); ByteData? pngBytes = await (await p.toImage(300, 100)).toByteData(format: ui.ImageByteFormat.png); Uint8List data = Uint8List.view(pngBytes!.buffer); return BitmapDescriptor.fromBytes(data); }
效果对比
- 安卓模拟器运行效果:Marker文本呈现倒置状态
- 三星设备运行效果:Marker文本显示正常
依赖环境
- Flutter版本:3.29.0
- Dart版本:3.7.0
- google_maps_flutter: 2.10.1(测试2.5.3至2.10.1版本均存在该问题)
- label_marker: 1.0.1(使用该库也出现倒置问题)
测试设备
- SM A145F(Android 14,API 34)
- sdk gphone64 x86 64模拟器(Android 15,API 35)
内容的提问来源于stack exchange,提问作者EK LY
相关产品推荐
相关产品推荐

