GoogleMaps V3中的InfoWindow closeclick事件即将被解雇?

san*_*erb 3 javascript-events google-maps-api-3

我注意到InfoWindow上的closeclick事件是在Google Maps V3中显示InfoWindow之前调用的.有没有人见过这个?错误?我对设计的误解?

考虑一个简单的例子:

<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
      html { height: 100% }
      body { height: 100%; margin: 0px; padding: 0px }
      #map_canvas { 
                  }
    </style>

    <script type="text/javascript" 
            src="http://maps.google.com/maps/api/js?sensor=false"
            > 
    </script>

    <script type="text/javascript">

      function initialize() 
      {
        var newLatLng = new google.maps.LatLng(47.620513,-122.33963);

        var myOptions = { zoom: 12,
                          center: newLatLng,
                          draggingCursor: 'pointer',
                          draggableCursor: 'default',
                          mapTypeId: google.maps.MapTypeId.ROADMAP
                          };     

        map = new google.maps.Map(  document.getElementById("map_canvas"),
                                         myOptions);

        google.maps.event.addListener(map, 'click', function(event) {
          placeMarker(event.latLng);
          });
    }

    function placeMarker(location)
    {
      // Create new marker
      var marker = new google.maps.Marker({
          position: location, 
          map: map
      });

      map.panTo(location);

      markerWindow(marker);
    }

    // Prompt new event marker form
    function markerWindow(marker)
    {
      var infoHtml = "testing";

      var infoW = new google.maps.InfoWindow({});

      infoW.setContent(infoHtml);

      google.maps.event.addListener(infoW, 'closeclick', closeMarker());

      infoW.open(map, marker);
    }

    function closeMarker()
    {
      window.alert("closeclick fired");
    }

    </script>
  </head>
  <body onload='initialize()'>
  <div id="map_canvas" style="   position:absolute;
                                 width:400px; 
                                 height:400px;"
                                 >
       </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果运行此示例,将在显示InfoWindow之前调用closeclick,而不是在创建InfoWindow后按下InfoWindow气泡右上角的"x"按钮.这是一个错误(他们的或他的)或我是否误解了设计/使用?

环境:Windows Vista(32位),Firefox 3.6.10

Ska*_*lig 9

猜猜你自己已经解决了这个问题,但对于那些有同样问题的人来说.尝试将该函数作为参考传递.所以不是这样的:

google.maps.event.addListener(infoW, 'closeclick', closeMarker());
Run Code Online (Sandbox Code Playgroud)

做这个:

google.maps.event.addListener(infoW, 'closeclick', closeMarker);
Run Code Online (Sandbox Code Playgroud)

请注意,您的代码类似于:

google.maps.event.addListener(map, 'click', function(event) {
      placeMarker(event.latLng);
});
Run Code Online (Sandbox Code Playgroud)

但匿名function(event)是一个特殊情况,它允许在函数名后使用().