2
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"       src="https://maps.google.com/maps?hl=en&amp;sll=37.936424,-107.814144&amp;layer=c&amp;cid=12115290478932730695&amp;panoid=YY_tNFWmbOaOJDV_zlAZ0A&amp;cbp=13,40.7,,0,5.57&amp;gl=US&amp;t=m&amp;cbll=37.936374,-107.814213&amp;ie=UTF8&amp;hq=&amp;hnear=&amp;ll=37.935914,-107.813505&amp;spn=0.004595,0.010568&amp;source=embed&amp;output=svembed"></iframe><br /><small><a href="https://maps.google.com/maps?hl=en&amp;sll=37.936424,-107.814144&amp;layer=c&amp;cid=12115290478932730695&amp;panoid=YY_tNFWmbOaOJDV _zlAZ0A&amp;cbp=13,40.7,,0,5.57&amp;gl=US&amp;t=m&amp;cbll=37.936374,-107.814213&amp;ie=UTF8&amp;hq=&amp;hnear=&amp;ll=37.935914,-107.813505&amp;spn=0.004595,0.010568&amp;source=embed" style="color:#0000FF;text-align:left">View Larger Map</a></small>

所以有嵌入代码。我想知道如何强制生成的内容自动旋转?我可以使用 JS 吗?

4

2 回答 2

5

访问组件iframe

不,您将无法iframe从 Javascript 访问内容。

Javascript 安全策略不允许跨域访问嵌入 (i) 框架的文档。

它被称为同源策略

在计算中,同源策略是许多浏览器端编程语言(例如 JavaScript)的重要安全概念。该策略允许在源自同一站点的页面上运行的脚本(方案、主机名和端口号的组合[1])不受特定限制地访问彼此的方法和属性,但禁止跨页面访问大多数方法和属性不同的网站。[1] 同源策略也适用于 XMLHttpRequest 和 robots.txt。[2]


使用谷歌 API

解决方案是使用可以将您的应用程序与其服务(在本例中为街景)连接起来的Google API 。

我认为你需要panControl.

ApanControl提供了一种旋转全景图的方法。默认情况下,此控件显示为标准的集成罗盘和平移控件。您可以通过在 panControlOptions 字段中提供 PanControlOptions 来更改控件的位置。

(在API中搜索“街景控件” )

样本

即使这不是最好的解决方案,我认为这会对您有所帮助。这将更新heading全景图。

<DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8">
    <title>Street View service</title>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script>
        var panorama;

        function initialize() {
            var fenway = new google.maps.LatLng(42.345573,-71.098326);
            var panoramaOptions = {
                position: fenway,
                pov: {
                heading: 4,
                    pitch: 10
                }
            };
            panorama = new  google.maps.StreetViewPanorama(document.getElementById('pano'),panoramaOptions);

            var i = 0;
            window.setInterval(function () {
                panorama.setPov({
                    heading: i,
                    pitch: 10,
                    zoom: 1
                });
                i += 0.1;
            }, 10);
        }

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

    </script>
  </head>
  <body>
    <div id="map-canvas" style="width: 400px; height: 300px"></div>
    <div id="pano" style="position:absolute; left:410px; top: 8px; width: 400px; height: 300px;"></div>
  </body>
</html>

此外,如果您想停止旋转,请使用jQuery 函数添加 formouseentermouseleavefor 的处理程序。#panoon()

请参阅JSFIDDLE

于 2013-05-16T16:46:29.270 回答
0

小心,如果我使用病毒化程序,我会从莫斯科到我的服务器得到一些奇怪的连接。所以我把它从我的页面上删除了。

于 2014-12-13T11:22:34.030 回答