1

チェックされているかどうかに応じてif else javascript関数を実行するhtmlチェックボックスがあります。チェックボックスをオンにすると、DB から「Fishmark」と呼ばれるマーカーが読み込まれます。これはうまくいきます。

私が助けを必要としているのは、ボックスがチェックされていないときにマーカーを削除することです。if、else ステートメントが正しいことはわかっているので、実際の G​​oogle API コードと同じです。サイトの別の部分で setMap(null) を正常に使用したので、Fishmark マーカーをすべてマップから削除しない理由がわかりません。

var checkbox = document.getElementById("chbx");     
function addRemoveFishing(){
    if(checkbox.checked==true){
        fishingUrl("XML_Fishing.php", function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
      var title = markers[i].getAttribute("title");
      var water_type = markers[i].getAttribute("water_type");
      var water_depth = markers[i].getAttribute("water_depth");
      var point = new google.maps.LatLng(
          parseFloat(markers[i].getAttribute("lat")),
          parseFloat(markers[i].getAttribute("lng")));
    var bait = markers[i].getAttribute("bait");
    var fish = markers[i].getAttribute("fish");
    var notes = markers[i].getAttribute("notes");

      var Fishhtml = "<b>" + title + "</b> <br/>" + water_type + "</b> <br/>" + water_depth + "</b> <br/>" + bait
      + "</b> <br/>" + fish + "</b> <br/>" + notes;
      var icon = FishingIcon;
     var Fishmark = new google.maps.Marker({
        map: map,
        position: point,
        icon: icon.icon
      });
      bindInfoWindow4(Fishmark, map, Fishinfo, Fishhtml);
                        }
    });
    }
    else {
        Fishmark.setMap(null);
    }
};
4

1 に答える 1

2

for ループで複数のマーカーを作成しています。あなたのelseステートメントでは、マップからマーカーを1つだけ削除しています。

たとえば、マーカーを配列に格納し、else ステートメントで、マーカーごとに setMap(null) を呼び出す for ループを作成します。

于 2012-10-27T20:37:08.640 に答える