【问题标题】:[[google_maps_flutter]] How to define that a specific marker will be displayed above all other markers[[google_maps_flutter]] 如何定义特定标记将显示在所有其他标记之上
【发布时间】:2022-11-10 12:21:24
【问题描述】:
我的应用程序显示地图和标记,它工作正常。
但是,我希望一个特定的标记(我以编程方式选择)将显示在其他标记之上,并且很容易找到。
它是由标记 Set 中的顺序定义的绘制顺序吗?
markers: Set.from(markers),
我通过删除更改了顺序并添加了特定的标记,它不影响
在下面的示例中,我看到了标记 #6,我希望看到后面的标记 #1
我能做些什么 ?
【问题讨论】:
标签:
flutter
google-maps
google-maps-markers
google-maps-flutter
【解决方案1】:
我找到了两个选项的解决方案
- 创建一个新的标记列表。
除了具有可见 = 假的特定选项之外的所有内容。
具体可见=真。
在此选项中,应用程序将仅显示特定的
Future<void> setVisible(String _eMail, bool _visible) async {
final Marker marker = markers.where((element) => element.markerId == MarkerId(_eMail)).first;
if (_visible != marker.visible) {
markersVisible.add(marker.copyWith(visibleParam: !marker.visible,));
} else {
markersVisible.add(marker.copyWith(visibleParam: marker.visible,));
}
}
- 使用阿尔法。
除特定 Alpha=0.1 外的所有内容
具体的一个Alpha=1
并将特定的添加到最后的标记列表中。
Future<void> setAlpha(String _eMail, double _alpha) async {
final Marker marker = markers.where((element) => element.markerId == MarkerId(_eMail)).first;
markersVisible.add(marker.copyWith(alphaParam:_alpha ));
}
创建新标记列表后,更新显示
setState(() {
markers = markersVisible;
markersVisible = [];})
【解决方案2】:
2个多小时后我的解决方案。
我认为这很困难,但很容易。 :)
为您的模型添加一个 zIndex 属性,并将默认 zIndex 设置为 0.5,将您想要高于所有其他标记的 zIndex 设置为 1.0。