我一直收到此错误“Uncaught TypeError:无法读取未定义的属性'LatLng'” 在尝试创建地图时 在头部:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.js"/>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&sensor=true"></script>
.............
function init(){
var latlng = new google.maps.LatLng(-43.552965, 172.47315);
var myOptions = {
zoom: 10,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"), myOptions);
}
.............
<body>
<div id="map" style="width:600px;height: 600px;">
</div>
<ul class="navigation">
</ul>
</body>
答案 0 :(得分:7)
如果一起使用,上述答案都将解决此问题。属性LatLng未定义,因为google
对象尚不可用。
您始终关闭<script>
代码段。
google
对象不可用。所以在你的javascript中你必须使用谷歌地图的addDomListener()
。 Kara的解决方案是正确的,但它不会在你的情况下工作,因为函数名是init,addDomListener必须等待“加载”。你需要:
google.maps.event.addDomListener(window, 'load', init);
另一个非常简单的解决方案是将回调添加到脚本
src="https://maps.googleapis.com/maps/api/js?v=3&sensor=true&callback=init
回调将等待脚本加载,然后触发init
函数初始化并绘制地图。
我将解决方案放在CodePen http://codepen.io/redbirdisu/pen/BHivq
上答案 1 :(得分:5)
看起来问题是缺少jquery.js包含的<script>
的结束标记:
<script
type="text/javascript"
src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.js"/>
<script
type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?v=3&sensor=true">
</script>
需要使用<script>
关闭 </script>
个标记,它应该是:
<script
type="text/javascript"
src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.js">
</script>
<script
type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?v=3&sensor=true">
</script>
有关详细信息,请参阅:Why don't self-closing script tags work?
答案 2 :(得分:0)
什么时候运行init函数? 如果在加载google.js之前运行init函数,则可能会出现此错误。
尝试像这样调用init函数。
function init(){
//...
}
google.maps.event.addDomListener(window, 'init', Initialize);
答案 3 :(得分:0)
我也遇到了同样的问题,所有语法都是正确的。尝试通过将脚本文件上移/下移HTML文件来进行修复,但没有一个成功。
我所做的是,从URL中删除了&callback=init
,并在$(document).ready(function () {})
内调用了该方法。现在可以正常使用了。