Listener和Google Maps标记的关闭问题

Dan*_*man 3 javascript google-maps listener dom-events

我想为每个生成的标记添加一个Listener事件,这样当您单击标记时,您将被重定向到永久链接URL.使用下面的代码,每个标记的永久链接值都是相同的(它是最后一个值).我已经阅读过关闭问题,这似乎就是我所拥有的.我真的没有得到我看过的例子.

有人可以看看我的代码并指出我正确的方向吗?任何帮助是极大的赞赏!

downloadUrl("http://localhost/map/generatexml.php", function(data) {
            var xml = parseXml(data);
            var markers = xml.documentElement.getElementsByTagName("marker");
            for (var i = 0; i < markers.length; i++) {
              var permalink = markers[i].getAttribute("permalink");
              var point = new google.maps.LatLng(
                  parseFloat(markers[i].getAttribute("lat")),
                  parseFloat(markers[i].getAttribute("lng")));
              var marker = new google.maps.Marker({map: map,position: point,icon: icon.icon,shadow: icon.shadow,title: name});
              google.maps.event.addListener(marker, 'click', function() {self.location.href = permalink;});
            }
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 11

试试这个:

for (var i = 0; i < markers.length; ++i) {
  // ... like what you have already ...
  (function(permalink) {
    google.maps.event.addListener(marker, 'click', function() {self.location.href = permalink;});
  })(permalink);
}
Run Code Online (Sandbox Code Playgroud)

通过在每次迭代中创建一个带有"永久链接"值副本的新词法范围,您的处理程序应该更好地工作.