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