2017-03-06 51 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; 
 
}