我收到JavaScript“google is undefined”错误。
如果这个问题类似于this,我很抱歉,但我在不同的环境中使用它,所以这可能是一个MVC问题。
我使用MCV5网站标准模板,我放在_layout.chtml主模板的头部:
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
此代码进入其中一个视图,用于帐户/索引操作:
<div id="map_canvas"></div>
<span id="result"></span>
<script>
var map = null;
var markersArray = [];
function initialize() {
var latlng = new google.maps.LatLng(13.73868, 1.07143);
var settings = {
zoom: 14,
center: latlng,
mapTypeControl: true,
scaleControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.DEFAULT
},
mapTypeId: google.maps.MapTypeId.ROADMAP,
backgroundColor: 'white'
};
map = new google.maps.Map(document.getElementById('map_canvas'), settings);
google.maps.event.addListener(map, 'click', function (event) {
document.getElementById('result').innerHTML = 'Lat: ' + event.latLng.lat() + ' Lng: ' + event.latLng.lng();
});
}
window.onload = initialize;
</script>
不知何故链接的google js文件似乎没有加载时间函数initialize()运行,我在初始化()函数的第一行中得到JavaScript“google is undefined”错误。
感谢您的帮助。
答案 0 :(得分:1)
MVC可能成为问题的唯一真正意义在于加载布局。您是否检查了网页来源以确保Google Maps API脚本实际位于页面上?如果不是,那么您只需要弄清楚为什么您的视图没有使用您认为应该的布局。
如果页面上 ,则打开JS文件的链接并确保其正确加载。特别是如果您在公司网络上,有时防火墙或其他安全软件可能会阻止某些脚本正确加载。如果是这样的话,您需要与基础设施部门合作。
另外,请注意您对SSL的使用。如果您正在为正在加载此网站的网站使用SSL,那么此脚本将无法加载,因为它来自HTTP,而不是HTTPS。通常,使用HTTPS版本的外部资源总是更好,因为无论您的网站是在HTTPS还是HTTP上运行,都应该有效。此外,您可以将URL协议设为相对:
<script src="//maps.google.com/maps/api/js?sensor=false"></script>
假设它不是第三方使用完全不同的域进行SSL的烦人实例之一,它将根据您的网站使用的内容请求HTTP或HTTPS。