2017-03-06 36 views
-1

我创建多点标志是这样的:如何在动态创建Google地图标记之后访问Google地图标记?

for (i = 0; i < locations.length; i++) { 

    console.log("Adding marker..."); 

    marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: map, 
      draggable:true, 
      icon: locations[i][3] 
    }); 

    google.maps.event.addListener(marker, 'dragend', function(){ 

     console.log(marker.getPosition()); 
     // This doesn't work :(
    }); 

} 

我再想,当他们被移动到(与getPosition)访问每个标记的位置(经纬度&长)。我将如何实现这一目标?地图上最有可能总是有两个标记,所以我需要访问标记0和标记1,并在移动它们时记录它们中的每一个。

UPDATE 1:

我尝试添加id: locations[i][0]到标记,然后用访问它:console.log(marker.id);但是,这始终返回第二标记的ID /名称,即使第一一个被移动。

+0

你将不得不吨推每个标记在一个全局定义数组,然后访问阵列 VAR gmMarkers = []; gmMarkers.push(marker); 则可以使用 对于访问它(VAR I = 0;我

+0

添加事件侦听每个标记个别标记 –

回答

3

在点击侦听器中使用this来引用被点击的标记物。

google.maps.event.addListener(marker, 'dragend', function(){ 
    console.log(this.getPosition()); 
}); 
+0

这是比较明智​​的方法来做到这一点。无需为此关键字维护数组 +1 –

0

您标记存储到一个数组,同时创建它们

var arr_marker=[]; 
 
for (i = 0; i < locations.length; i++) { 
 

 
    console.log("Adding marker..."); 
 

 
    marker = new google.maps.Marker({ 
 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
 
      map: map, 
 
      draggable:true, 
 
      icon: locations[i][3] 
 
    }); 
 

 
    google.maps.event.addListener(marker, 'dragend', function(){ 
 

 
     console.log(marker.getPosition()); 
 
     // This doesn't work :(
 
    }); 
 
arr_marker[] = marker; 
 
}