开发者问题收集

未捕获的类型错误:无法读取未定义的 Google Map 和 jquery 的属性‘x’

2015-12-12
8352

我寻找了许多关于此异常的答案,但是我找到的所有解决方案都无法解决我的问题。

我正在使用 jQuery 和谷歌地图。我的 html 页面包含一些元素,以及一个包含许多函数和 ajax 调用的 .js 文件。

在 HTML 中:我将脚本放在正文的末尾:

<!-- here my .js file--> 
<script type="text/javascript" src="js/myFunctions.js"></script>
<!-- Google Map -->
<script src="https://maps.googleapis.com/maps/api/js?key=MyKey" async defer>
</script>
</body>

在 myFunctions.js 文件中:

我有一个 ajax 调用,它返回纬度和经度,我将其发送给创建地图的函数:

initMap(parseFloat($(this).find("latitude").text()),
        parseFloat($(this).find("longitude").text()));

然后我调用 map 函数来创建地图:

var map;
initMap = function (lat, lan) {
    console.log(lat);
    map = new google.maps.Map(document.getElementById('locMapDiv'), {
        center: {lat:lat , lng: lan},
        zoom: 13
    });
}

一切工作正常,但是当我在地图上拖动时,控制台中显示错误:未捕获的类型错误:无法读取未定义的属性“x”。我不知道为什么会出现这个错误,而拖动工作正常。

这个错误可能是什么原因造成的?因为一切似乎都工作正常,甚至拖动和缩放也工作正常。

2个回答

尝试反转所包含脚本的顺序:

<script src="https://maps.googleapis.com/maps/api/js?key=MyKey" async defer>
<script type="text/javascript" src="js/myFunctions.js"></script>

并尝试在 load 函数内调用 init 函数,以确保 DOM 已完全加载:

google.maps.event.addDomListener(window, "load", , function () {
     initMap(parseFloat($(this).find("latitude").text()),
             parseFloat($(this).find("longitude").text()));
);

希望这对您有所帮助。

Zakaria Acharki
2015-12-12

尝试使用对象类型 LatLng 设置中心。

对于您的情况,请使用以下代码:

var centerLatLng = new google.maps.LatLng(lat, lan);
ZSFS
2016-08-02