0

編集: Google からの返信によると、これは Google 側の問題であることを確認しました。

EDIT2: Google の担当者から、このバグが修正されたとの連絡がありました。

Google Maps V3 API を使用しているときに厄介なバグが発生しました。

マップを設定し、ストリートビューに切り替え、ストリートビューを閉じてから再度開くと、画像は空白で表示されます (コントロールは表示されたままです)。コントロールをクリックしてカメラを移動すると、画像が返されます。

これは何が原因ですか?以下のコードが非常に単純であることがわかるように、どこが間違っているのかわかりません。

<!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>
4

1 に答える 1

0

私は同じ厄介なバグを見つけ、さらに div と少しの CSS を使用して回避策を開発しました。ストリートビューを #street に割り当てます

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

div の可視性を切り替える関数を追加します。

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 */
  }      
}

おそらく最もエレガントなソリューションではありませんが、機能します。CSS の絶対配置と JavaScript フレームワークを使用すると、jQuery の方が好きです。素敵なフェード効果を追加できます。

于 2010-08-01T13:56:16.937 に答える