我真的无法理解javascript,我知道这应该是一个非常简单的问题,但我坚持了.. 我有一个带有多个标记的谷歌地图,我添加了每个标记,工作完美,但我想给他们链接。我的位置数组就像;
['http://website.com',36.598900,35.202094,'1']
我使用[1]和[2]作为lat long,但我想使用[0]作为链接。我的循环工作完美,但每个标记的链接都会转到最后一个项目的链接
这是我的循环
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
icon: image,
url: locations[i][0],
});
google.maps.event.addListener(marker, 'click', function() {
window.location.href = marker.url;
});
}
我在哪里弄错了?
答案 0 :(得分:1)
1 /您需要在var
之前添加marker = new google.maps.Marker({
,
因为,您现在使用marker
作为全局变量,每次迭代都会覆盖它。
2 /无论如何,最佳做法是将所有标记保存为对象属性。让我们调用此对象:mk
,然后您的标记将为mk.marker0
,mk.marker1
,......等等。
var mk={}; // this is nameSpace to save all markers
locations.map((loc,i)=>{
mk['marker'+i] = new google.maps.Marker({
position: new google.maps.LatLng(loc[1], loc[2]),
map: map,
icon: image,
url: loc[0],
});
return mk['marker'+i];
}).forEach((marker)=>{
google.maps.event.addListener(marker, 'click', function() {
window.location.href = marker.url;
});
})