2012-09-27 26 views
5

特定のマーカーがクリックされてウィンドウが開いたときに情報ウィンドウを開くためのコードがあります。誰かがクリックされたときに、前のインフォ画面を閉じる方法を誰かが知っていますか?別のマーカーがクリックされたときに情報ウィンドウを閉じる

google.maps.event.addListener(marker, 'click', function() { 
      infowindow.open(map1, marker); 
     }); 
+0

コードをもっと表示できますか?情報ウィンドウが最初に作成されるのはどこですか? – duncan

+1

可能な複製http://stackoverflow.com/questions/5110956/close-other-infowindows-nicely?rq=1またはhttp://stackoverflow.com/questions/12567280/google-api-v3-multiple-infowindows- + 12567780#12567780 – geocodezip

答えて

9

ちょうどあなたがこれだけのように、グローバルスコープでONE infoWindowを作成することを確認してください。

infoWindow = new google.maps.InfoWindow; //static infoWindow for all your markers 
google.maps.event.addDomListener(window, 'load', function() { 
    //create your markers here 
    google.maps.event.addListener(marker, 'click', function() { 
       infoWindow.open(map1, marker); //take care with case-sensitiveness 
      }); 
}); 

UPDATE

  • 修正大文字と小文字の区別はダンカンによって発見。
  • マーカをクリックした後、マーカをクリックした後、マーカをクリックしてください。
+0

はinfoWindow.openにする必要があります.Javascriptでは大文字と小文字が区別されます。 – duncan

+0

それはうまくいかないです。再びすべてのクリックが1つのウィンドウです – user1292656

+0

すべてのマーカーはページロード時に作成されますなぜそれがうまくいかないのでしょうか) – user1292656

1

infowindow.close()はオープ​​ンインフォウィンドウを閉じる。それはあなたのインフォ画面をどのように作成しているかによって異なります - 全てを扱う1つのインフォウィンドウ変数しか持たないのですか、各マーカーに複数のインフォ画面オブジェクトを作成していますか?この段階でコードをもっと見ることなく、より具体的にするのは難しいです。

+0

はい同じ変数を使用してすべてを処理しています。 – user1292656

1

別のコードをクリックしたときに前の情報ウィンドウを閉じるには、次のコードが関数initialize()にあることを確認する必要があります。

infoWindow = new google.maps.InfoWindow;

4

、それはlastOpenedInfoWindowまたは何でもしたい、あなたのJSファイルに名前をグローバル変数を作成し、新しい情報ウィンドウを開く前に、それその閉じた後、現在開いているウィンドウに「lastOpenedInfoWindow」を割り当てるので、

google.maps.event.addListener(marker, 'click', (function(marker, content, infowindow) { 
     return function() { 
      closeLastOpenedInfoWindow(); 
      infowindow.setContent(content); 
      infowindow.open(map, marker); 
      lastOpenedInfoWindow = infowindow; 
     }; 
    })(marker, makrerdata[i], infowindow)); 
} 


function closeLastOpenedInfoWindow() { 
    if (lastOpenedInfoWindow) { 
     lastOpenedInfoWindow.close(); 
    } 
} 
0

InfoWindowのインスタンスが1つ(new google.maps.InfoWindow)であることを確認してください。したがって、マーカーがクリックされるたびに、initializeメソッドまたはグローバルに宣言されたInfoWindowのいずれかで宣言されたインスタンスが1つだけ表示されます。

var infoWindow = new google.maps.InfoWindow
このinfoWindowが一度だけインスタンス化されていることを確認してください。それ以外の場合は、マーカーをクリックするたびに複数のウィンドウが開きます。

marker.addListener('click', function() {         
    infoWindow.setContent(infowincontent); 
    infoWindow.open(clntLocMap, marker); 
}); 
関連する問題