动态创建后如何访问Google地图标记?

时间:2017-03-06 05:01:24

标签: javascript jquery google-maps google-maps-api-3

我正在为这样的多个点创建标记:

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下)访问每个标记移动时的位置(lat&amp; long)。我怎么做到这一点?地图上很可能总是有2个标记,因此我需要访问标记0和标记1并在移动时记录每个标记。

更新1:

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

您可以在创建标记时将标记存储到数组中

&#13;
&#13;
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;
}
&#13;
&#13;
&#13;