2012-10-27 8 views
1

체크 여부에 따라 if javascript 기능을 실행하는 html 체크 박스가 있습니다. 확인란을 선택하면 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); 
    } 
}; 
+0

"Fishmark = new google.maps.Marker ({" to "Fishmark = new google.maps.Marker ({". "var"키워드는 로컬 변수로 만들어 정의되지 않습니다. 두 번째로 실행 중입니다.이 문제를 해결하는 것은 잘못된 자바 스크립트 연습입니다. 무엇이 잘못되었는지 지적하십시오. – Nils

+0

'var'을 제거했지만 여전히 마커를 제거하지 않았습니다. – HondaKillrsx

+0

죄송합니다. 코드에서 for 루프를 놓쳤습니다. 내 대답을보십시오. – Nils

답변

2

for 루프에 여러 마커를 만듭니다. 귀하의 다른 성명에서 당신은 오직 하나의 마커를지도에서 제거하고 있습니다.

예를 들어 배열에 마커를 저장하고 else 문에 각 마커에 대해 setMap (null)을 호출하는 for 루프를 만듭니다.

+0

고마워, 그랬어. – HondaKillrsx