2012-11-22 44 views
3

因此,我試圖找出一種方法,可以在將數據從數據庫中拉出之後,但在將它們推入陣列之前更改Google Maps V3標記的HTML 。運行函數後更改Google Maps Marker

當調用getFishing()時,我想運行convertRate(rate),以便如果rate變量等於兩個或更多,它將顯示Markers自身的HTML內的圖片。我試過把它放在bindInfoWindow4()中,我嘗試了getFishing()函數中的幾個地方,但沒有成功。有沒有人做過這個?標記被推到魚陣列後是否可能?

 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

相關問題