Gen*_*nik 2 javascript google-maps scope map google-maps-markers
我正在尝试为谷歌地图上的每个标记添加一个事件监听器,但由于某种原因,最后一个标记是获得监听器的唯一标记.
这是有问题的地图页面:http: //www.comehike.com/outdoors/parks/trailhead.php
你看,当你点击任何标记时,只有左下角的标记会弹出html.我需要的是让弹出窗口发生在被点击的标记上.
知道可能导致这种情况的原因吗?
谢谢,亚历克斯
这是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)
这只是我的头脑.如果我在某些部分没有明确说明,请告诉我.
| 归档时间: |
|
| 查看次数: |
1022 次 |
| 最近记录: |