为什么我的阵列无法正常工作[Google Map Api V3]

时间:2013-04-14 13:06:56

标签: javascript google-maps-api-3

所以我想做的是当用户点击标记并将用户链接到特定的URL时,但是它有问题,它只链接到最后一个数组URL。我可以知道为什么吗?

 for (var key in places){
            var myPlace = places[key];
            if (myPlace) {
                var marker = new google.maps.Marker({
                    map: map,
                    url:myPlace.infowin_html,
                    position: new google.maps.LatLng(myPlace.position.lat, myPlace.position.lng)
                });
                createTooltip(marker, key); 
                google.maps.event.addListener(marker, 'click', function() {
                window.location.href=marker.url;
            }); 


        }


    } 

我的js

var places =Array();
places.push({
infowin_html:"https:www.facebook.com",
tooltip_html:"<div><img       src='http://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Habs_flw_oak_park_home.jpg/220px-Habs_flw_oak_park_home.jpg' width='220' hieght='174' /></div><h3>Chow Kit, KL</h3><div><stong>Population:</strong> 52k</div>Click for more..", 
position:{lat:3.1597, lng:101.7000}
});

places.push({
infowin_html:"https:www.facebook.com",
tooltip_html:"<h3>Subang Jaya, Selangor</h3><div><stong>Population:</strong> 2.7m</div>Click for more..",
position:{lat:3.0394, lng:101.5878}
});

places.push({
infowin_html:"https:www.facebook.com",
tooltip_html:"<h3>Puchong Jaya, Selangor</h3><div><stong>Population:</strong> 74k</div>Click for more..",
position:{lat:3.0113, lng:101.6115}
});

places.push({
infowin_html:"asd",
tooltip_html:"<h3>Cyberjaya, Selangor</h3><div><stong>Population:</strong>   55k</div>Click for more..",
position:{lat:2.9225, lng:101.6550}
});

我得到的是“asd”网址。

1 个答案:

答案 0 :(得分:3)

问题是匿名功能。你没有。这意味着,在marker中是循环的最后一个值。哪个是ASD。所以你需要这样的东西,这样你每次循环时都不会覆盖标记,并将值保留在你的处理程序中。

for (var key in places){
   (function(myPlace){
        if (myPlace) {
            var marker = new google.maps.Marker({
                map: map,
                url:myPlace.infowin_html,
                position: new google.maps.LatLng(myPlace.position.lat, myPlace.position.lng)
            });
            createTooltip(marker, key); 
            google.maps.event.addListener(marker, 'click', function() {
                window.location.href=marker.url;
            }); 
        }
    })(places[key]);
 }