javascript - 谷歌地图错误标记获取事件属性

标签 javascript google-maps dictionary scope google-maps-markers

我正在尝试为谷歌地图上的每个标记添加一个事件监听器,但由于某种原因,最后一个标记是唯一一个获得监听器的标记。

这是 map 出现问题的页面: http://www.comehike.com/outdoors/parks/trailhead.php

您会看到,当您单击任何标记时,只有左下角的标记会弹出 html。我需要的是让弹出窗口发生在被点击的标记上。

知道是什么原因造成的吗?

谢谢, 亚历克斯

最佳答案

这是 JSFiddle Demo这类似于您网站的谷歌地图,但使用 ajax,我只是放置了 3 个“虚拟”Lat Lng 坐标。如果您需要进一步的解释帮助,请告诉我:

原因在您的回调函数中。在您的 initializeTrailheads() 函数中,您创建了一个局部变量名称 marker 并将点击事件附加到它。然后,您将标记分配给执行 infowindow.open(map, marker); 的信息窗口 google.map.event.addListener 有一个回调函数,当点击完成。因此,它基本上获取了其父范围的 marker 变量,因为它本身没有。通常在点击事件被触发时,标记成为您初始化的最新标记(这是最后一个),并且基本上与信息窗口相关联,该信息窗口不链接到它之前的任何其他标记,因此导致你的问题。您所要做的只是将变量 marker 替换为 this ,它指的是被点击的标记,应该可以解决您的问题:

 google.maps.event.addListener(marker, 'click', function() {
      infowindow.open(map, this);
 });

这只是我的头脑。如果我在某些部分没有解释清楚,请告诉我。

关于javascript - 谷歌地图错误标记获取事件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5322022/

相关文章:

javascript - 如何在没有额外键的情况下循环创建数组对象?

php - 列出用户位置附近的地理位置

python - 根据代数运算的结果对对象字典进行排序

python - 有效地将列从数据框转换为字典列表

python - 有没有更好的方法来创建嵌套字典的值列表?

javascript - 如何通过按下 JavaScript 中的按钮将文本从输入字段移动到另一个输入字段

javascript - 从保存在全局常量中的 xmlDocument 创建 Extjs 树面板

javascript - EJS 文件无法识别 JavaScript 文件的代码

javascript - 关闭特定信息窗口/隐藏折线 Google map api v3

google-maps - 从隐藏区域显示谷歌地图