繁体   English   中英

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

[英]why my array isn't working correctly [Google Map Api V3 ]

所以我想做的是当用户单击标记时,它将用户链接到特定的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” URL。

问题是匿名函数。 你什么都没有 这意味着,标记是循环的最后一个值。 哪个是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]);
 } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM