3

そこで、データベースからプルされた後、配列にプッシュされる前に、GoogleMapsV3マーカーのHTMLを変更する方法を見つけようとしています。

getFishing()が呼び出されたら、convertRate(rate)を実行して、rate変数が2以上の場合に、マーカー自体のHTML内にある画像を表示するようにします。私はそれを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);
        });
    }
4

1 に答える 1

11

クリックリスナーを変更して、マーカーのメンバー変数に保存されているHTMLを表示する場合は、いつでも変更できます。インフォウィンドウが開いている場合は、閉じてから再度開くことをお勧めします(または、コンテンツを所定の場所で更新しますが、より複雑になります)。

何かのようなもの:

  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'>";
于 2012-11-22T01:27:52.300 に答える