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); 
    } 
}); 

에서 가져옵니다. 마커 중 하나를 보이지 않게하려면 보통 marker.setVisible(false)을 사용합니다. 그러나이 경우 모든 마커의 이름은 동일합니다 (마커).

도움을 주시면 감사하겠습니다.

답변

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에서 마커를 만들 수 있습니다.

+0

그건 작동합니다! 감사. 나는 이것을하려고했지만 "var marker = []"대신 "marker = new Array()"를 사용했습니다. 어떻게 내 접근 방식이 효과가 없었습니까? – Haley

+0

아마도'var'을 사용하지 않았고 그걸 이상한 장소에 넣었 겠지요? 'new Array()'는'[]'와 비슷하지만 후자가 선호됩니다. – Halcyon