2016-07-30 99 views
0

我真的不能理解javascript,我知道它應該是一個非常簡單的問題,但我stucked .. 我有一個谷歌地圖與多個標記,我添加了每個標記和工作完美,但我想給他們的鏈接。我的位置數組就像;谷歌地圖標記與網址

['http://website.com',36.598900,35.202094,'1'] 

我使用[1]和[2]作爲拉長,但我想用[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; 
    }); 

} 

哪裏我犯這樣的錯誤?

回答

1

1 /你需要,因爲,你現在用的作爲全局變量被覆蓋每次迭代marker = new google.maps.Marker({前加var

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; 
      });  

}) 
+0

你是對的我添加var之前標記,但沒有任何改變。仍然所有鏈接到最後一個項目的url值 –

+0

@ÇağdaşTakış:我更新了答案,它現在可以工作..確定 –

+1

您節省了我的睡眠時間。很感謝! –