我似乎无法让这个工作,而我过去一直这样做,成功......
我正在尝试在网页中嵌入Google Maps iframe。 iframe将无法加载,显示错误消息,说:
Chrome,在控制台中:拒绝显示文档,因为X-Frame-Options禁止显示。
IE9,在页面上:此内容无法在框架中显示
我采取的步骤是:
我正在使用ASP.NET MVC4,在IIS Express中本地运行,但在IIS7中的服务器上也是如此。
奇怪的是,当我只是创建一个本地HTML文件并从文件系统打开它时,我没有问题。
在jsfiddle中粘贴代码时,它似乎确实有效。
我是否需要配置IIS或在我的标题中添加内容,或类似的内容?
HTML代码段
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.be/maps?f=q&source=s_q&hl=en&geocode=&q=Kortrijk,+Belgium&aq=0&oq=kortrijk,+bel&sll=50.802805,3.279785&sspn=0.351067,0.617294&t=h&ie=UTF8&hq=&hnear=Kortrijk,+West+Flanders,+Vlaams+Gewest&ll=50.802897,3.280106&spn=0.350496,0.617294&z=11&iwloc=A&output=embed"></iframe>
答案 0 :(得分:2)
感谢我的同事敏锐而富有洞察力的眼睛,我们找到了这个问题。
首先,它似乎只出现在比利时地图http://maps.google.be上,(显然是afaik),而不是http://maps.google.com上。
在调用IFRAME内容时,Google会将IFRAME内容重定向到同一网址,但附加?wmode=transparent
。
浏览器不允许多个'?'在网址中,所以它会中止操作。
修复:
使用Google地图生成的相同网址,但只需添加以下内容:
&wmode=transparent
答案 1 :(得分:1)
你在iframe源中肯定有&output=embed
querystring参数吗?如果您不包含该内容,那么Google将不会发送正确的X-Frame-Options响应标头,您将收到您所描述的错误。
您能否显示正在呈现地图的MVC视图的片段?
答案 2 :(得分:0)
我无法在网络上获得任何有关在iframe中嵌入谷歌地图链接的建议。
我最终使用谷歌地图API,通过填写以下框来生成初始代码:
并修改结果代码以符合我的目的。
您可以使用上面的链接为您自己的地图生成代码,然后可选地使用我的代码,将上述网站生成的经度和纬度复制到我的代码中。您也可以将自己的html插入&#34;内容&#34;以下,与上述网站产生的内容无关。
<?php
// IE won't work with percentage height and FF won't work with em units.
// Simple code here assumes if browser isn't IE, then is FF;
// And I don't care about other browsers.
//
$height = "$browser" == 'ie' ? '25em' : '99%' ;
$width = "$browser" == 'ie' ? '99%' : '99%' ;
echo <<<XXXEODXXX
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> </script>
<div style="height:$height; width:$width; overflow:hidden;">
<div id="gmap_canvas" style="height:$height; width:$width;">
</div>
<style>
#gmap_canvas
img
{
max-width:none!important;
background:none!important
}
</style>
</div>
<script type="text/javascript">
google.maps.event.addDomListener ( window, 'load', init_map );
function init_map ()
{ var myOptions = { zoom:12, center:new google.maps.LatLng ( 41.1889495, -104.1781593 ), mapTypeId:google.maps.MapTypeId.ROADMAP };
map = new google.maps.Map ( document.getElementById ( "gmap_canvas" ), myOptions );
marker = new google.maps.Marker ( {map: map, position: new google.maps.LatLng( 41.1889495, -104.1781593 ) } );
infowindow = new google.maps.InfoWindow ( { content:"<b>Biz Name</b><br/>Biz Street Address<br/>Biz City, State Zip<br/>Biz Phone" } );
google.maps.event.addListener ( marker, "click", function () { infowindow.open ( map, marker ); } );
infowindow.open ( map, marker );
}
</script>
XXXEODXXX;
&GT;