[英]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.