-1

私は非常に単純なことをしようとしていますが、検索が空になり、何らかの理由でこれを解決できません(私はJSの初心者です)。タグのonclickで情報ウィンドウを閉じようとしています。「x」をクリックして閉じることができることは知っていますが、その目的はより深くなっています。

私のコード:

function placeMarker(location) {
    marker = new google.maps.Marker({
    position: location,
    map: map,
  });
  var infowindow = new google.maps.InfoWindow({
    content: "<a href='#' id='link' onclick='infowindow.close()'>Close</a>"
  });
  infowindow.open(map,marker);
}

このようなことは可能ですか?ありがとう

4

3 に答える 3

2

複数のinfoWindow-instancesがあると仮定します(現在のコードでは、これは関数を複数回呼び出すと発生します):

文字列の代わりにノードを使用する必要がありますcontent。そうすると、関数(クロージャ)内から情報ウィンドウへの参照を使用し、以下を使用してクリック関数を割り当てることができますaddDomListener

function placeMarker(location) {
    var marker = new google.maps.Marker({
               position: location,
               map: map,
             }),
        infowindow = new google.maps.InfoWindow(),
        content    = document.createElement('a');

    content.setAttribute('href','#');
    content.appendChild(document.createTextNode('close'));
    google.maps.event.addDomListener(content,'click',
                                     function(){infowindow.close();})
    infowindow.setContent(content);
    infowindow.open(map,marker);
}
于 2013-02-22T17:40:43.463 に答える
1

はい、次のことを前提として、実装はリストされているとおりに機能します。

  1. 単一の共通情報ウィンドウを使用します
  2. 変数はグローバルです(関数のinfowindow外部で定義されます)
于 2013-02-22T16:51:22.690 に答える
0

あなたが持っているような密接なリンクは必要ありませんonclick='infowindow.close()。インフォウィンドウオブジェクトには、すでに「閉じる」アイコンがあります。バツ

常に1つのインフォウィンドウのみを開くようにするには、それを単一のグローバルオブジェクトにして、関連するマーカーをパラメーターとして開きます。

//Global
var infowindow = new google.maps.InfoWindow({});

その後...

function placeMarker(location) {
    marker = new google.maps.Marker({
    position: location,
    map: map,
  });
  infowindow = new google.maps.InfoWindow({
    position: location,
    content: "Hello from this marker"
  });
  infowindow.open(map,marker);
 }
于 2013-02-22T16:39:04.437 に答える