将ID添加到谷歌地图标记

Nic*_*ick 76 javascript google-maps

我有一个脚本循环并一次添加一个标记.

我试图让当前标记有一个信息窗口,并且一次只有一个地图上有5个标记(4个没有信息窗口,1个有)

如何为每个标记添加一个id,以便我可以根据需要删除和关闭信息窗口.

这是我用来设置标记的功能:

function codeAddress(address, contentString) {

var infowindow = new google.maps.InfoWindow({
  content: contentString
});

if (geocoder) {

  geocoder.geocode( { 'address': address}, function(results, status) {

    if (status == google.maps.GeocoderStatus.OK) {

        map.setCenter(results[0].geometry.location);

       var marker = new google.maps.Marker({
          map: map, 
          position: results[0].geometry.location
       });

       infowindow.open(map,marker);

      } else {
       alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }
Run Code Online (Sandbox Code Playgroud)

}

Cra*_*gma 185

JavaScript是一种动态语言.您可以将它添加到对象本身.

var marker = new google.maps.Marker(markerOptions);
marker.metadata = {type: "point", id: 1};
Run Code Online (Sandbox Code Playgroud)

此外,因为所有v3对象都会扩展MVCObject().您可以使用:

marker.setValues({type: "point", id: 1});
// or
marker.set("type", "point");
marker.set("id", 1);
var val = marker.get("id");
Run Code Online (Sandbox Code Playgroud)

  • 我很好奇,一旦你给了标记id,你将如何在地图画布之外访问这些标记.$( '#1')的doSomething(); 例如? (9认同)
  • 以防万一有人正在寻找解决方案来访问地图之外的 ID。您可以通过将标记推入数组来跟踪标记。这样,您就可以通过迭代标记数组来访问标记 (3认同)

zen*_*n.c 13

只需添加另一个适合我的解决方案..您只需将其附加到标记选项中:

var marker = new google.maps.Marker({
    map: map, 
    position: position,

    // Custom Attributes / Data / Key-Values
    store_id: id,
    store_address: address,
    store_type: type
});
Run Code Online (Sandbox Code Playgroud)

然后检索它们:

marker.get('store_id');
marker.get('store_address');
marker.get('store_type');
Run Code Online (Sandbox Code Playgroud)