6

尝试
在头部创建地图时,我不断收到此错误“Uncaught TypeError: Cannot read property 'LatLng' of undefined”:

 <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

4 回答 4

7

如果一起使用,上面的两个答案都可以解决这个问题。属性 LatLng 未定义,因为google对象尚不可用。

你总是关闭你的<script>标签期。

google在加载 DOM 之前,对象将不可用。所以在你的 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

于 2013-07-24T14:27:03.150 回答
5

看起来问题是缺少<script>jquery.js 包含的结束标记:

 <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>

有关更多信息,请参阅:为什么自闭合脚本标签不起作用?

于 2012-12-06T15:00:29.607 回答
0

你什么时候运行你的初始化函数?如果 init 函数在 google.js 加载之前运行,你会得到这个错误。

尝试像这样调用初始化函数。

function init(){
      //...
}
google.maps.event.addDomListener(window, 'init', Initialize);
于 2012-12-06T14:40:11.880 回答
0

我也有同样的问题,所有语法都是正确的。尝试通过向上/向下移动 HTML 文件的脚本文件来修复,但没有一个成功。

我所做的是,&callback=init从 URL 中删除 并在$(document).ready(function () {}). 现在它完美地工作了。

于 2019-08-13T05:56:02.183 回答