【问题标题】:Google Maps API - Embedded YouTube in infoWindow fills screenGoogle Maps API - infoWindow 中嵌入的 YouTube 填满屏幕
【发布时间】:2013-08-23 19:00:04
【问题描述】:

我正在使用 Google Maps API v3,并在信息面板中嵌入了一些 YouTube 视频。它显示并正常工作。当我关闭面板时发生了奇怪的事情。

  • 在 IE8 中,随着 Flash 播放器进入全屏状态,整个屏幕变黑。看不到视频,但如果我点击,就会播放音频。

  • 在 FF23 中,控制台中显示错误 - TypeError: Value not an object。 http://s.ytimg.com/yts/jsbin/www-embed-player-vflTdsFMk.js(第 220 行)

作为测试,我只是从 Google 的示例 (https://developers.google.com/maps/documentation/javascript/examples/infowindow-simple) 中获取代码,并将内容更改为 YouTube iframe 嵌入代码。同样的事情也会发生。

测试代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Info windows</title>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script>
        function initialize() {
          var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
          var mapOptions = {
            zoom: 4,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
          }

          var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

          var contentString = "<iframe width='250' height='167' src='http://www.youtube.com/embed/eLRlHcCiNjg' frameborder='0' ></iframe>";

          var infowindow = new google.maps.InfoWindow({
              content: contentString
          });

          var marker = new google.maps.Marker({
              position: myLatlng,
              map: map,
              title: 'Uluru (Ayers Rock)'
          });
          google.maps.event.addListener(marker, 'click', function() {
            infowindow.open(map,marker);
          });
        }

        google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div style="width: 800px; height: 800px;" id="map-canvas"></div>
  </body>
</html>

主要问题是 IE8。我显然不想支持它,但不幸的是我没有那个选项。

任何帮助将不胜感激。

更新

在关闭面板之前更改 iframe 的 src 似乎可行。尽管在 IE 中屏幕仍然闪烁一秒钟。

google.maps.event.addListener(infowindow,'closeclick',function(){
  document.getElementById('theframe').src = "dummyfile.html";
});

【问题讨论】:

  • 我创建了一个 jsFiddle,但 IE8 甚至不会加载它。您可以在 FF 中看到错误:jsfiddle.net/ptH3G/1

标签: javascript google-maps-api-3 youtube


【解决方案1】:

尝试在关闭面板之前销毁播放器对象。 -> player.destroy()

【讨论】:

  • 您可能是对的,但我不知道如何在 iframe 中获取对播放器的引用。我宁愿不必使用 YouTube API 来嵌入视频。
猜你喜欢
  • 2021-12-19
  • 2014-06-08
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 2012-01-06
  • 2011-12-09
相关资源
最近更新 更多