我正在尝试为谷歌地图上的每个标记添加一个事件监听器,但由于某种原因,最后一个标记是唯一一个获得监听器的标记。
这是 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/