如何将按钮的功能链接到数组的单个标记

How to link the function of a button to a single marker of an array

提问人:Anthony 提问时间:10/12/2023 更新时间:10/12/2023 访问量:51

问:

我有一个包含 20 个元素的数组,如下所示:

它们用绿色标记显示在地图上,但我希望当我单击按钮并尊重某些属性时,标记会变成红色。 问题是,当我改变颜色时,每个标记都会变成红色,而不仅仅是一个。那么,如何根据属性仅为一个元素设置函数呢?

const array = [
{ text: "something1",
  coordinates: "something2"
},
...
];

function do(){
//what the function should do
}
javascript 数组 函数 google-maps-markers each

评论

0赞 Mara Black 10/12/2023
也许为每个标记添加一个新字段,isClicked:boolean,当您单击将其设置为true时?通过这种方式,您可以获得所有标记的状态,并且可以知道哪个被点击或未被点击

答:

0赞 Qiimiia 10/12/2023 #1

尝试为数组中的每个对象添加一个属性,例如颜色:

array .forEach(obj => obj.color = 'green')

然后,在函数中添加一个条件,将“green”属性更改为“red”,仅针对单击的对象

评论

0赞 Anthony 10/12/2023
可悲的是,它不起作用..我想插入代码,以便它更容易理解,但它太长了。顺便说一句,我在地图上有这个标记。当我单击标记时,它会显示一个带有信息和按钮的弹出窗口。单击按钮时,标记应变为红色,但每个标记都变为红色。
0赞 Anthony 10/12/2023
if(booking === “1h”){ mybtn.disabled = true; window.confirm(); setTimeout(() => { mybtn.disabled = false; }, “5000”); stazioni.map(item => { marker = new L.marker(item.coordinates, {icon: redMarker}) .bindPopup() .openPopup(); marker.addTo(map); }); setTimeout(() => { stazioni.map(item => { marker = new L.marker(item.coordinates, {icon: greenMarker}) .bindPopup() .openPopup(); marker.addTo(map); }, “5000”); }
0赞 Anthony 10/12/2023
代码是这样的(在上一条评论中) 代码有效,我理解为什么它显示全部红色,因为使用 stazioni.map(item ... ) 我选择了数组中的每个项目,但我不知道如何仅将函数的效果应用于数组的一个项目。
0赞 Qiimiia 10/12/2023
Stazioni 中有什么?您应该将 id 分配给 mybtns,并在您的地图中,仅对 id 为单击的按钮执行 {icon: redMarker}
0赞 Anthony 10/12/2023
这就是 stazioni 中的内容(有 20 个像他们一样),它们在地图上是点。const stazioni = [ { text: “Via Giovanni Giolitti, 143, 00185 Roma (RM)”, coordinates: [41.89947045325958, 12.502756543946065] }, ] 我有一个 mybtn 的 ID,但它对于所有标记都是唯一的。我以为解决方案就像点击mybtn一样,获取点击的标记坐标并将标记设置为红色,但我不知道是否可以这样做