Я хочу разместить маркеры, используя изображения .svg в качестве значков. Я использую библиотеку google_maps_flutter. Это работало с изображениями, преобразованными в .png, но я не нашел способа напрямую использовать файлы .svg.
Я размещаю здесь после прочтения этой проблемы: Использование маркеров SVG в google_maps_flutter Плагин Flutter
И пытаясь использовать метод fromAssetImage, как описано в этом потоке: Как изменить размер значка маркера Google Map во Flutter?
Я надеялся, что эта новая версия библиотеки поможет решить мою проблему.
Я попытался решить это с помощью следующего кода:
Класс MapWidget
for (Place place in widget.places) {
place.toMarker(
context,
() => _onPlaceTapped(place),
).then(setState((){
markerSet.add
}));
}
Занятие по месту
Future<Marker> toMarker(BuildContext context, VoidCallback onTap) async {
return Marker(
markerId: MarkerId(id.toString()),
position: LatLng(lat, lon),
icon: await category.markerIcon(createLocalImageConfiguration(context)),
onTap: onTap,
);
Категория категории
Future<BitmapDescriptor> markerIcon(ImageConfiguration configuration) async {
BitmapDescriptor b;
switch (type) {
case CategoryType.FirstCategory:
b = await BitmapDescriptor.fromAssetImage(configuration, 'assets/markers/marker-first.svg');
break;
case CategoryType.SecondCategory:
b = await BitmapDescriptor.fromAssetImage(configuration, 'assets/markers/marker-second.svg');
break;
default:
b = await BitmapDescriptor.fromAssetImage(configuration, 'assets/markers/marker-third.svg');
break;
}
return b;
}
Если вам интересно, путь к изображениям уже добавлен в pubspec.yaml.
Я ожидал, что красные маркеры Google по умолчанию будут заменены некоторыми настраиваемыми маркерами (на каждом настраиваемом маркере должно быть маленькое изображение значка) на карте, однако отображаются только маркеры по умолчанию (а не маркеры по умолчанию в операторе switch, о которых я говорю маркеры Google по умолчанию).
При использовании симулятора iOS и версии библиотеки google_maps_flutter 0.5.15 + 1 сообщение об ошибке отсутствует.
drawableRoot
вsvgDrawableRoot
и, возможно, добавить комментарий о том, что размеры, используемые вpicture.toPicture(32, 32)
, должны быть тщательно выбраны, иначе изображение svg выиграет не отображаются полностью. - person wenolOaR   schedule 05.09.2019