删除Google地图标记

时间:2012-10-27 18:15:14

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

我有一个html复选框,运行if else javascript函数,具体取决于是检查还是取消选中。选中该复选框后,它会从DB加载名为“Fishmark”的标记。这很好用。

我需要帮助的是在取消选中该框时移除标记。我知道if,else语句是正确的,因此它与实际的Google 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);
    }
};

1 个答案:

答案 0 :(得分:2)

您正在for循环中创建多个标记。在您的else语句中,您只从地图中删除一(1)个标记。

将标记存储在数组中,例如,在else语句中为每个标记创建一个调用setMap(null)的for循环。