谷歌地图标记与URL

时间:2016-07-30 01:09:59

标签: javascript google-maps marker

我真的无法理解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;
  });

}

我在哪里弄错了?

1 个答案:

答案 0 :(得分:1)

1 /您需要在var之前添加marker = new google.maps.Marker({

因为,您现在使用marker作为全局变量,每次迭代都会覆盖它。

2 /无论如何,最佳做法是将所有标记保存为对象属性。让我们调用此对象:mk,然后您的标记将为mk.marker0mk.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;
             });    

 })