2012-11-22 5 views
3

Google Maps V3 마커의 HTML을 데이터베이스에서 가져온 후 해당 배열로 밀어 올리기 전에 HTML을 변경하는 방법을 알아 내려고 노력 중입니다. .함수가 실행 된 후 Google Maps Marker HTML 변경하기

getFishing()이 호출 될 때 rate 변수가 두 개 이상이면 마커 자체의 HTML 내에있는 그림을 표시하도록 convertRate (rate)를 실행하고 싶습니다. 나는 bindInfoWindow4()에 넣으려고했는데 getFishing() 함수 내에서 여러 위치를 시도했지만 성공하지 못했습니다. 누구든지 전에 이것을 했습니까? 마커를 fishArray에 밀어 넣은 후에도 가능합니까?

 function getFishing() { 
     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 id = markers[i].getAttribute("id"); 
       var title = markers[i].getAttribute("title"); 
       var rate = markers[i].getAttribute("rate"); 
       var Fishhtml = "<img id='1star' src='images/1star.png' style='visibility:hidden'>"; 
       var icon = FishingIcon; 
       var Fishmark = new google.maps.Marker({ 
        map: map, 
        position: point, 
        icon: icon.icon 
       }); 
       fishArray.push(Fishmark); 
       bindInfoWindow4(Fishmark, map, Fishinfo, Fishhtml); 

      } 
     }); 
    } 
    function convertRate(rate) { 
     if (rate >= 2) { 
      document.getElementById("1star").style.visibility = 'visible'; 
     } 
    } 

    function bindInfoWindow4(marker, map, infoWindow, html) { 
     google.maps.event.addListener(marker, 'click', function() { 
      infoWindow.setContent(html); 
      infoWindow.open(map, marker); 
     }); 
    } 

답변

9

마커의 멤버 변수에 저장된 HTML을 표시하도록 클릭 수신기를 변경하면 언제든지 변경할 수 있습니다. InfoWindow가 열려 있으면 닫고 다시 열거 나 내용을 업데이트 할 수 있습니다. 그러나 더 복잡해집니다. 같은

뭔가 :

function bindInfoWindow4(marker, map, infoWindow, html) { 
     marker.myHtmlContent = html; 
     google.maps.event.addListener(marker, 'click', function() { 
     infoWindow.setContent(marker.myHtmlContent); 
     infoWindow.open(map, marker); 
     }); 
    } 

그런 다음 marker.myHtmlContent의 값을 변경하여 컨텐츠를 업데이트합니다. 표시되도록하려면 다음과 같이하십시오.

marker.myHtmlContent = "<img id='1star' src='images/1star.png' style='visibility:visible'>"; 
+0

marker.myHtmlContent의 콘텐츠를 변경하도록 지정하는 방법을 알려주십시오. 내가하는 방법을 아는 것은 요소 id의 'id'를 지정하여 내용을 변경하는 것입니다. 너는 나에게 정확한 대답을 줄 필요는 없지만 나를 굴려 라. 제발. – HondaKillrsx

+0

다음과 같이됩니다 : marker.myHtmlContent.getElementById ("1star"). style.visibility = 'visible'; – HondaKillrsx

+0

아니, 업데이트 된 답변을 참조하십시오. – geocodezip