获取事件属性的Google Map错误标记

Gen*_*nik 2 javascript google-maps scope map google-maps-markers

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

这是有问题的地图页面:http: //www.comehike.com/outdoors/parks/trailhead.php

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

知道可能导致这种情况的原因吗?

谢谢,亚历克斯

KJY*_*葉家仁 6

这是JSFiddle演示,类似于您网站的谷歌地图,但与ajax,我只是放置3"虚拟"Lat Lng坐标.如果您需要进一步帮助解释,请告诉我们:

原因在于你的回调函数.在您的initializeTrailheads()函数中,您创建了一个本地变量名称,marker 并在其上附加了一个单击事件.然后,您为infowindow分配了标记,其中infowindow.open(map, marker); google.map.event.addListener有一个回调函数,当单击完成时,该函数位于不同的范围内.因此,它基本上抓住了marker其父级范围的变量,因为它本身没有一个变量.通常情况下,当点击事件被触发时,标记将成为您初始化的最新标记(这是最后一个),并且基本上附加了信息窗口,该信息窗口不会链接到之前的任何其他标记,因此引起你的问题.你要做的就是简单地替换引用被点击的标记的变量marker,this它应该解决你的问题:

 google.maps.event.addListener(marker, 'click', function() {
      infowindow.open(map, this);
 });
Run Code Online (Sandbox Code Playgroud)

这只是我的头脑.如果我在某些部分没有明确说明,请告诉我.