Google maps 如何在flatter中为谷歌地图创建自定义图像标记,并在自定义小部件中使用它?

Google maps 如何在flatter中为谷歌地图创建自定义图像标记,并在自定义小部件中使用它?,google-maps,flutter,dart,widget,google-maps-markers,Google Maps,Flutter,Dart,Widget,Google Maps Markers,如何在flatter google map中将custom widget用作下图中的市场,或者如何在flatter中实现下图作为输出 这是我第一次在颤振中使用贴图。我知道我需要将图像转换为Unit8List,但这只是图像!如何在自定义小部件中处理图像 图像来自网络api调用,格式为base46string。如果您使用的是google\u maps\u flatter软件包,您可以使用图标的BitmapDescriptor使用自己的图像创建自定义标记。首先,您需要在pubspec.yaml的fl

如何在
flatter google map
中将
custom widget
用作下图中的市场,或者如何在
flatter
中实现下图作为输出

这是我第一次在颤振中使用贴图。我知道我需要将图像转换为
Unit8List
,但这只是图像!如何在自定义小部件中处理图像


图像来自网络api调用,格式为
base46
string。

如果您使用的是
google\u maps\u flatter
软件包,您可以使用图标的
BitmapDescriptor
使用自己的图像创建自定义标记。首先,您需要在
pubspec.yaml
flatter:
部分下定义您的资产/图像:

flutter:
# To add assets to your application, add an assets section, like this:
  assets:
   - assets/images/
然后,在加载贴图之前,定义一个
BitmapDescriptor
变量将图标存储在
main.dart
上,如下所示:

 // Custom marker icon
 BitmapDescriptor icon;

 // List for storing markers
 List<Marker> allMarkers = [];

 @override
   void initState() {
     super.initState();
     BitmapDescriptor.fromAssetImage(
        ImageConfiguration(), 'assets/images/icon.png')
        .then((value) => icon = value);
 }
编辑:

您还可以使用从URL加载图像,然后将响应传递到
BitmapDescriptor.fromBytes(bytes)


经过数小时的测试,我得到的工作解决方案是
屏蔽
+
根据服务器端图像的要求添加边框。因为我已经能够将图像转换为
BitmapDescriptor
。所以现在我得到了想要的输出


注意:我还能够将
base64
图像字符串转换为图像,并在移动应用程序中工作。问题是它有时显示,有时不显示。随着图像数量的增加,问题也越来越严重。因此,上述解决方案是一个可以简单实用地实现的最佳解决方案。

问题是图像通过网络传输,我可以在api中以
base64
的形式发送图像,这样我就不需要等待图像加载。当前的问题是,处理图像需要花费一些时间,因为这些图像多次未显示。我可以知道您当前是如何获取图像的吗?您是否尝试过使用从URL获取图像,然后将响应中的字节传递到
BitmapDescriptor.fromBytes()?我编辑了我的答案,以包括这一点,因为我说的问题不是图像没有被提取。其未显示是问题所在。不管怎样,我得到的答案是另一种选择。
GoogleMap(
  initialCameraPosition: _initialLocation,
  mapType: MapType.normal,
  markers: Set.from(allMarkers),
  onMapCreated: (GoogleMapController controller) {
    mapController = controller;
     
    setState(() {
       // add marker 
       allMarkers.add(Marker(
          markerId: MarkerId('Google'),
          draggable: false,
          icon: icon,
          position: LatLng(37.422066,-122.08409)));
       });
    },
),
final Response response = await get("imageUrl");
icon = await BitmapDescriptor.fromBytes(response.bodyBytes);