Google Maps API v3 - TypeError:表达式'google.maps.LatLng'[undefined]的结果不是构造函数

时间:2011-07-05 01:59:52

标签: javascript google-maps-api-3

我正在创建一个静态html页面,以显示数据中的多个位置。我刚刚复制了其中一个示例并正在向后工作,但我在Safari Inspector中收到以下错误:

main.js:1SyntaxError: Parse error
sample.htm:10TypeError: Result of expression 'google.maps.LatLng' [undefined] is not a constructor.

这是我的HTML代码:

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Multi Markers Sample via Google Maps</title> 
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
function initialize() {
var myLatlng = new google.maps.LatLng(-30.2965590,153.1152650);
var myLatlng1 = new google.maps.LatLng(-30.2956470,153.1123707);
var myLatlng2 = new google.maps.LatLng(-30.2864430,153.1360230);
var myOptions = {
zoom: 13,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
icon: 'http://www.google.com/intl/en_us/mapfiles/ms/icons/blue-dot.png',
title:"Original Location"     });   
var marker = new google.maps.Marker({
position: myLatlng1,
map: map,
title:"Tom Cruise"     }); 
var marker = new google.maps.Marker({
position: myLatlng2,
map: map,
title:"Lady Gaga"     }); 
} 
</script> 
</head> 
<body onLoad="initialize()">   
<div id="map_canvas"></div> 
</body> 
</html>

我不确定我在这里做错了什么 - 它实际上适用于Windows上的IE v8但不适用于Safari,我需要让它适用于两者。

2 个答案:

答案 0 :(得分:22)

为您的Google地图请求添加回调功能。 它将在Google加载所需内容后执行。

http://maps.google.com/maps/api/js?sensor=false&callback=initialize

答案 1 :(得分:1)

嗨,请使用JQuery使用此代码 `

<html xmlns="http://www.w3.org/1999/xhtml">
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Multi Markers Sample via Google Maps</title> 
    <script src="js/jquery-1.10.2.min.js"></script>

<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
      <style>
        #map_canvas {
            height: 500px;
            width: 100%;
        }
    </style>
<script type="text/javascript">
    $(document).ready(function () {
        var myLatlng = new google.maps.LatLng(-30.2965590, 153.1152650);
        var myLatlng1 = new google.maps.LatLng(-30.2956470, 153.1123707);
        var myLatlng2 = new google.maps.LatLng(-30.2864430, 153.1360230);
        var myOptions = {
            zoom: 13,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        var marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            icon: 'http://www.google.com/intl/en_us/mapfiles/ms/icons/blue-dot.png',
            title: "Original Location"
        });
        var marker = new google.maps.Marker({
            position: myLatlng1,
            map: map,
            title: "Tom Cruise"
        });
        var marker = new google.maps.Marker({
            position: myLatlng2,
            map: map,
            title: "Lady Gaga"
        });
    });
</script> 
</head> 
<body >  
<div id="map_canvas"></div> 
</body> 
</html>`