0

私のウェブサイトには、PHP を介してマーカーが設定された Google マップがあります。私が理解していないのは、すべてのマーカー オブジェクトが同じ名前を持っているため、各マーカーを個別に識別する方法です。

このコードは、Google 開発者ページ ( https://developers.google.com/maps/articles/phpsqlajax_v3 )から取得したものです。

downloadUrl("phpsqlajax_genxml.php", function(data) {
  var xml = data.responseXML;
  var markers = xml.documentElement.getElementsByTagName("marker");
  for (var i = 0; i < markers.length; i++) {
    var name = markers[i].getAttribute("name");
    var address = markers[i].getAttribute("address");
    var type = markers[i].getAttribute("type");
    var point = new google.maps.LatLng(
        parseFloat(markers[i].getAttribute("lat")),
        parseFloat(markers[i].getAttribute("lng")));
    var html = "<b>" + name + "</b> <br/>" + address;
    var icon = customIcons[type] || {};
    var marker = new google.maps.Marker({
      map: map,
      position: point,
      icon: icon.icon,
      shadow: icon.shadow
    });
    bindInfoWindow(marker, map, infoWindow, html);
  }
});

例えば。マーカーの 1 つを非表示にしたい場合は、通常 を使用しますmarker.setVisible(false)。ただし、この場合、すべてのマーカーが同じ名前 ("marker") になります。

どんな助けでも大歓迎です。

4

1 に答える 1

1

たとえば、次のように、すべてのマーカーをリストに保持することで追跡できます。

var markers = [];
for (/* .. */) {
    /* .. */
    var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: icon.icon,
        shadow: icon.shadow
    });
    markers.push(marker);
    bindInfoWindow(marker, map, infoWindow, html);
}
console.log(markers); // prints a list of all markers

その後、次のことができます。

markers[2].setVisible(false);

位置 2 のマーカーを非表示にします。

于 2013-05-23T00:27:58.423 に答える