2013-05-03 2 views
0

Google지도에서 특정 마커를 삭제하려면 어떻게해야하나요? 아래 코드를 시도했지만 TypeError: marker[1] is undefined 오류가 발생합니다. [1]이 없으면 첫 번째 마커 만 삭제합니다. 나는 마커를 만드는 방법 특정 마커 삭제 APIv3

google.maps.event.addDomListener(deletemark, 'click', function() { 
      marker[1].setMap(null); 
}); 
} 

는 (코멘트에서 약간 수정)이다, 긴 배열의 마커의 위도는

var locations = [ [56.066877,21.069274], [55.279849,26.048155] ]; // removed "hanging comma" 
for (i = 0; i < locations.length; i++) 
{ 
    marker = new MarkerWithLabel({ 
    position: new google.maps.LatLng(locations[i][0], locations[i][1]), 
    map: map // removed "hanging comma" 
    }); 
} // added missing close bracket 
+0

마커를 정의하는 코드가 어떤 모양입니까? 처음에 대한 언급이 있습니까? 코드에서 삭제할 "특정"마커를 어떻게 알 수 있습니까? – geocodezip

+0

이렇게하면 마커와 마커의 위도가 배열로 길어집니다. for (i = 0; i user1876234

+1

추가 정보로 질문을 편집하면 의견에 게시 된 코드를 읽는 것이 정말 어렵습니다. – geocodezip

답변

3

마커를 저장하는 배열을 사용해보십시오

var markerArray=[]; 
var locations = [ [56.066877,21.069274], [55.279849,26.048155] ]; 
for (i = 0; i < locations.length; i++) 
{ 
marker = new MarkerWithLabel({ 
position: new google.maps.LatLng(locations[i][0], locations[i][1]), 
map: map // removed "hanging comma" 
}); 
markerArray.push(marker); 
}/

및 삭제 마커

,

function deleteMarkers() { 
    if (markersArray) { 
    for (i in markersArray) { 
    markersArray[i].setMap(null); 
    } 
markersArray.length = 0; 
} 
} 
+0

for..in 루프를 자바 스크립트에서 피하십시오, http://stackoverflow.com/questions/500504/why-is-using-for-in-with-array-iteration-such-a-bad-idea –

1

문제는 하나 개의 마커 변수가 즉, 가리키는 왼쪽 마지막으로 마커를 만듭니다 (첫 번째가 아님). 다른 마커를 삭제하려면 해당 마커에 대한 참조를 유지해야합니다 (배열 또는 함수 종료를 사용하여).