Google Maps Uncaught TypeError:无法读取未定义的属性“LatLng”

时间:2012-12-06 14:27:57

标签: javascript api google-maps

我一直收到此错误“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>

4 个答案:

答案 0 :(得分:7)

如果一起使用,上述答案都将解决此问题。属性LatLng未定义,因为google对象尚不可用。

您始终关闭<script>代码段。

在加载DOM之前,

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 () {})内调用了该方法。现在可以正常使用了。