You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过Google JavaScript Maps API加载地图,无报错但iframe为about:blank

解决Google Maps API加载后iframe显示about:blank的问题

遇到这种情况我之前也碰过,大概率是几个容易忽略的小问题导致的,咱们一个个排查解决:

1. 先修复API请求URL的参数拼接错误

你看你写的API脚本URL:

<script async defer src="https://maps.googleapis.com/maps/api/js?key=**API-KEY**callback=initMap"></script>

这里**API-KEY**和callback=initMap之间缺了一个&符号!Google Maps API根本识别不了这种参数格式,导致地图资源没正确加载,自然那个内部iframe就只能显示about:blank了。正确的写法应该是把参数用&分隔开:

<script async defer src="https://maps.googleapis.com/maps/api/js?key=你的实际API密钥&callback=initMap"></script>

别忘了把**API-KEY**替换成你在Google Cloud控制台生成的有效密钥,而且要确保这个密钥已经启用了「Maps JavaScript API」的权限哦。

2. 给地图容器设置明确的宽高

你的<div id="map"></div>没有任何样式设置,默认情况下这个div的高度是0,就算地图加载成功了也看不到,甚至会触发API的渲染异常。给它加个样式,比如:

<div id="map" style="width: 100%; height: 500px;"></div>

或者用CSS类来统一设置,保证容器有足够的空间让地图渲染。

3. 确保initMap函数在全局作用域可访问

你写的initMap函数要保证能被Google API的回调找到,最好把它的定义放在API脚本之前(因为async defer会让API脚本异步加载,只要函数在脚本执行前存在就没问题),而且别把它放在局部作用域里(比如嵌套在其他函数里)。完整的正确示例代码可以参考这样:

<html>
<head>
  <script>
    // 先定义全局的initMap函数
    function initMap() {
      var uluru = {lat: -25.363, lng: 131.044};
      var map = new google.maps.Map(document.getElementById('map'), {
        center: uluru,
        zoom: 12,
      });
    }
  </script>
  <!-- 再加载API脚本,参数格式正确 -->
  <script async defer src="https://maps.googleapis.com/maps/api/js?key=你的API密钥&callback=initMap"></script>
  <style>
    #map {
      width: 100vw;
      height: 100vh;
      margin: 0;
      padding: 0;
    }
  </style>
</head>
<body>
<div id="map"></div>
</body>
</html>

按照这几点调整后,应该就能正常加载地图了,那个about:blank的iframe是Google Maps内部的临时元素,只要地图渲染正常,它就会被替换成正确的地图内容啦。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:38:16