首页 > 解决方案 > Flutter google map maker ontap

问题描述

我是 Flutter 的新手。这是惊人的。我正在开发使用谷歌地图的小应用程序。我有 6 分(标记),需要识别选择了哪一个。我已经使用 i-index (i = 0..5) 将 ontap 事件添加到每个标记中。当我点击/单击标记时,我总是得到 6。根据标记,它应该是 0..5。

非常感谢,加布里埃尔

i=0;
marker.clear();
for (myPoint mar in globals.historia.items) {
  print(i.toString());
  marker.add(Marker(
    markerId: MarkerId(i.toString()),
    position: mar.pos,
    draggable: false,
    consumeTapEvents: true,
    onTap: () {
      print("Marker_id-${i.toString()}");
    },
  ));
  i++;
}

GoogleMap(onMapCreated:_onMapCreated,initialCameraPosition:CameraPosition(目标:我的位置,缩放:17.0,),折线:道路,标记:Set.of(标记),

标签: fluttergoogle-maps-markers

解决方案


当被触发时,它会使用最后一个值onTap()调用,这就是为什么每次点击标记时,print 方法都会打印 6. 是一个全局变量,它有自己的地址,因此该方法将搜索该地址上的每个值时间被称为。i== 6iprintonTap

我提出了这个解决方案- 用这个替换 onTap 中的 youtr print 方法:print("Marker_id-${globals.historia.items.indexOf(mar)}")

marfor in循环内部的一个局部变量,它的值从未改变,所以他会指向同一个值,onTap会按照你的意愿行事。


推荐阅读