3

私が持っている Google マップ バージョン 3 は、思い通りに動作しません。マップが開くと、ページ上にいくつかのマーカーがあり、マーカーをクリックまたはホバーすると、ホテルの名前が表示された小さな InfoBox が開きます。別のマーカーをクリックすると、最初の InfoBox が閉じ、新しいマーカーで新しい InfoBox が開きます。この問題は、最後の InfoBox を閉じるときに発生します。

オプションで closeBox を許可すると、InfoBox の残りの部分が閉じられたときに、closeBox (四角形の小さな十字) が画面に残ります。これは、別の InfoBox が開かれたために InfoBox が閉じた場合にのみ発生します。これに対する解決策が見つからないため、closeBox を廃止し、ユーザーがマップの空白の領域をクリックして最終的な InfoBox を削除できるようにするつもりでした。ただし、現時点では、それも機能しません。

問題のページは、 http://www.littlehotels-testdomain.co.uk/spain/abadia.phpで見ることができます(写真のすぐ右にある [このホテルのロケーション マップを表示] をクリックします)。

これを機能させるコードは次のとおりです。

      google.maps.event.addListener(hotelmarker, 'mouseover', function() {
    var ib = new InfoBox(ibOptions);
    boxText.innerHTML = hotelname;
    ib.open(map, hotelmarker);
    });
  google.maps.event.addListener(map, 'click', function() {
    ib.close(map, hotelmarker);
    });

2 番目のイベント リスナーに欠けているものはありますか?

4

2 に答える 2

5

ib (infoBox 参照) をグローバルにする必要があります。リスナー関数の外に置きます。

于 2012-07-02T15:27:14.797 に答える
5

Andy の JavaScript プログラミングの 47 番目の規則: jQuery を使用して 1 行で実行できることを達成するために、グローバル変数を使用しないでください。

$(".infoBox").hide();
于 2012-09-25T11:14:27.360 に答える