Google MAP API Uncaught TypeError: 無法讀取 null 的產物 'offsetWidth'

2022-08-30 01:12:28

我正在尝试使用以下代码使用Google MAP API v3。

<h2>Topology</h2>

<script src="https://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>

<link rel="stylesheet" type="text/css" href="{% url css_media 'tooltip.topology.css' %}" />
<link rel="stylesheet" type="text/css" href="{% url css_media 'tooltip.css' %}" />

<style type="text/css" >
      #map_canvas {
              width:300px;
            height:300px;
     }
</style>

<script type="text/javascript">

var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
            myOptions);

</script>

<div id="map_canvas"> </div>

当我运行此代码时,浏览器会这样说。

未捕获的类型错误:无法读取 null 的属性“偏移宽度”

我不知道,因为我遵循本教程中给出的方向。

你有什么线索吗?


答案 1

此问题通常是由于在需要访问它的javascript运行之前未呈现map div。

您应该将初始化代码放在 onload 函数中或 HTML 文件的底部,紧邻标记之前,以便 DOM 在执行之前完全呈现(请注意,第二个选项对无效 HTML 更敏感)。

请注意,正如 matthewsheets 所指出的,这也可能是由 div 引起的,该 id 在您的 HTML 中根本不存在(div 未呈现的病理情况)

添加 wf9a5m75 帖子中的代码示例,将所有内容放在一个位置:

<script type="text/javascript">

function initialize() {
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
        zoom: 8,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
            myOptions);
}
google.maps.event.addDomListener(window, "load", initialize);

</script>

答案 2

对于可能仍然遇到此问题的其他用户,即使在尝试上述建议后,在初始化函数中对地图画布使用不正确的选择器也可能导致相同的问题,因为该函数正在尝试访问不存在的内容。仔细检查您的映射 Id 是否与初始化函数中的 HTML 匹配,否则可能会引发相同的错误。

换句话说,请确保您的 ID 匹配。;)