所以我想做的是当用户点击标记并将用户链接到特定的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”网址。
答案 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]);
}