Flutter GoogleMaps - 自定义标记的动态着色

Posted

技术标签:

【中文标题】Flutter GoogleMaps - 自定义标记的动态着色【英文标题】:Flutter GoogleMaps - dynamic colouring of Custom Markers 【发布时间】:2020-07-09 09:13:58 【问题描述】:

Flutter Google Maps 允许在地图上使用标准/默认标记。您还可以通过编程方式将颜色应用于此标记,从而为您的应用添加各种颜色。

但是,我似乎无法使用相同的技术将颜色动态应用于自定义(白色)标记。与其制作 10 个具有不同颜色的自定义标记,我更喜欢使用纯白色的标记,并使用 Hue 或颜色混合对其进行动态着色。

默认标记

    bool bToggle = true; 

    _markers.add(Marker(
        markerId: MarkerId(markerid),
        position: newPos,
        onTap: () 
          ...
        ,
        infoWindow: InfoWindow(
          ...
        ),
        icon: BitmapDescriptor.defaultMarkerWithHue(
           (bToggle) ? BitmapDescriptor.hueYellow : BitmapDescriptor.hueRed
        ),        
      ));

自定义标记

    _markers.add(Marker(
        markerId: MarkerId(markerid),
        position: newPos,
        onTap: () 
          ...
        ,
        infoWindow: InfoWindow(
          ...
        ),
        icon: BitmapDescriptor.fromAssetImage(ImageConfiguration(devicePixelRatio: 2.5), 'assets/markers/pin-blue.png')
        ),        
      ));

非常感谢

【问题讨论】:

【参考方案1】:

标记不将其颜色更改为 BitmapDescriptor 色调的原因是需要重建屏幕以检测 bToggle 上的值变化。你可以在这里做的是在价值变化时致电setState()

【讨论】:

以上是关于Flutter GoogleMaps - 自定义标记的动态着色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中使用 googleMaps 更新我的位置自定义标记

GoogleMaps Flutter 插件 MissingPluginException

如何使用 GoogleMaps 在 PlacePicker 中将当前位置设置为 initialPosition - Flutter

在 GoogleMaps 实例中更改地图语言

Flutter自定义 Flutter 组件 ( 创建自定义 StatelessWidgetStatefulWidget 组件 | 调用自定义组件 )

flutter扫码插件,支持自定义