0

タイトルと説明を含むポリゴンを含むカスタム KML (geoxml3) を実行している Google マップ (API 3) があります。

すべて正常に動作しますが、代わりにホバーで動作するように情報ウィンドウを表示するポリゴン クリックを変更する必要があります。クリック関数を実行するマウスオーバー リスナーを作成するのは簡単ですが、別の関数を実行するにはクリックが必要なので、このメソッドを使用するとクリック関数が上書きされます。

ポリゴン クリック機能で実行されるコードを見つけてコピーし、onmouseover代わりに適用するにはどうすればよいですか? これは可能ですか?

更新:geoxmlv3.jsファイルに次のセクションが見つかりました。

google.maps.event.addListener(gObj, 'click', function (e) {

    var iW = this.infoWindow;
    iW.close();
    iW.setOptions(this.infoWindowOptions);

    if (e && e.latLng) iW.setPosition(e.latLng);

    else if (this.bounds) iW.setPosition(this.bounds.getCenter());

    iW.setContent("<div id='geoxml3_infowindow'>" + iW.getContent() + "</div>");

    google.maps.event.addListenerOnce(iW, "domready", function () {

        var node = document.getElementById('geoxml3_infowindow');
        var imgArray = node.getElementsByTagName('img');

        for (var i = 0; i < imgArray.length; i++) {

            var imgUrlIE = imgArray[i].getAttribute("src");
            var imgUrl = cleanURL(doc.baseDir, imgUrlIE);

            if (kmzMetaData[imgUrl]) {
                imgArray[i].src = kmzMetaData[imgUrl].dataUrl;
            } else if (kmzMetaData[imgUrlIE]) {
                imgArray[i].src = kmzMetaData[imgUrlIE].dataUrl;
            }
        }
    });

    iW.open(this.map, this.bounds ? null : this);
});

「クリック」イベントを「 」に変更しようとしましたmouseoverが、それによって何も発生しないmouseoverか、クリックが機能しません

4

1 に答える 1

1

これが解決策です(多くの試行錯誤の後!)

google.maps.event.addListener(poly,"mouseover",function(e) {

  var iW = this.infoWindow;
  iW.close();
  iW.setOptions(this.infoWindowOptions);

  if      (e && e.latLng) iW.setPosition(e.latLng);
  else if (this.bounds)   iW.setPosition(this.bounds.getCenter());

  iW.setContent("<div id='geoxml3_infowindow'>"+iW.getContent()+"</div>");

  iW.open(this.map, this.bounds ? null : this);
});

次に、クリック機能を別のものに変更します。情報ウィンドウも閉じるようにマウスアウト機能を設定することも忘れないでください

于 2014-07-18T14:21:00.220 に答える