Javascript Google Maps V3街景在第二次调用setVisible()时不显示

Javascript Google Maps V3街景在第二次调用setVisible()时不显示,javascript,google-maps,mapping,google-maps-api-3,google-street-view,Javascript,Google Maps,Mapping,Google Maps Api 3,Google Street View,编辑:收到谷歌的回复,他们已经确认这是他们这边的一个问题 编辑2:我在谷歌的联系人告诉我他们已经修复了这个错误 我在使用Google Maps V3 API时遇到了一个麻烦的bug 如果设置地图,切换到streetview,关闭streetview,然后重新打开,图像将显示为空白,但控件仍会显示。如果单击控件移动摄影机,图像将返回 这是什么原因?正如你所看到的,下面的代码非常简单,我想不出哪里出了问题 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

编辑:收到谷歌的回复,他们已经确认这是他们这边的一个问题

编辑2:我在谷歌的联系人告诉我他们已经修复了这个错误

我在使用Google Maps V3 API时遇到了一个麻烦的bug

如果设置地图,切换到streetview,关闭streetview,然后重新打开,图像将显示为空白,但控件仍会显示。如果单击控件移动摄影机,图像将返回

这是什么原因?正如你所看到的,下面的代码非常简单,我想不出哪里出了问题

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  <head>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
  </head>
  <body>
    <div id="map" style="width:500px;height:300px"></div>

    <script type="text/javascript">
      var map = new google.maps.Map(document.getElementById('map'), {
        center: new google.maps.LatLng(37.767063, -122.445724),
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        zoom: 15
      });

      var streetView = map.getStreetView();
      streetView.setPosition(map.getCenter());

      setTimeout(function() { streetView.setVisible(true); }, 1500);
      setTimeout(function() { streetView.setVisible(false); }, 3000);
      setTimeout(function() { streetView.setVisible(true); }, 4500);
    </script>
  </body>
</html>

我发现了同样令人讨厌的bug,并开发了一个解决方案,使用了进一步的div和一些CSS。将街景指定给街道

<div id="map" style="width:500px;height:300px;display:block"></div>
<div id="street" style="width:500px;height:300px;display:none"></div>

也许不是最优雅的解决方案,但它确实有效。有了CSS绝对定位和JavaScript框架,我更喜欢jQuery,你可以添加一个很好的淡入淡出效果。

我已经将此升级到我在谷歌的API联系人那里,如果我了解到任何相关信息,我会回来报告。
function toggleStreetView() {
  var mapDiv    = document.getElementById('map');
  var streetDiv = document.getElementById('street');

  var streetVisible = (streetDiv.style.display == 'block');
  if (streetVisible) {
    // hide streetView, show map
    streetDiv.display = 'none';
    mapDiv.display    = 'block';
  } else {
    // vice versa
    mapDiv.display    = 'none';
    streetDiv.display = 'block';
    streetView.setVisible(true); /* order important, show after div is visible */
  }      
}