Google Map API - 'google'未定义 - MVC5 javascript

时间:2015-08-04 13:53:49

标签: javascript asp.net-mvc api google-maps

我收到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”错误。

感谢您的帮助。

1 个答案:

答案 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。