简体   繁体   English

未捕获的参考错误:未定义谷歌

[英]Uncaught Reference Error: google is not defined

I saw a dozen of questions with the same title & the problem. 我看到了十几个带有相同标题和问题的问题。 After going through all those problems & making changes in the code, I wasn't able to resolve this issue. 在解决了所有这些问题并对代码进行了更改后,我无法解决此问题。

My Google map works fine. 我的Google地图运行正常。 But in the console, this error is shown. 但是在控制台中,会显示此错误。 Can anyone please help me figure out this problem. 任何人都可以帮我解决这个问题。

I specified JavaScript code inside the head tag 我在head标签中指定了JavaScript代码

 <script>
    function loadScript()
    {
    var myKey = "__API-Key__";
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://maps.googleapis.com/maps/api/js?key="+myKey+"&sensor=false&callback=initialize";
    document.body.appendChild(script);
    }
    window.onload = loadScript;
    </script>

    <script>

        function initialize()
        {
            var laa=-34.397;
            var lonn= 150.644;
            var mapOptions =
            {
                zoom: 7,
                center: new google.maps.LatLng(laa, lonn),
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                maxZoom: 8,
                minZoom:2
            };

            var map = new google.maps.Map(document.getElementById('location-canvas'),
                mapOptions);

            var marker = new google.maps.Marker({
                map: map,
                draggable: false,
                position: new google.maps.LatLng(laa, lonn)
            });

            function bind(eventName)
            {
                google.maps.event.addListener(map, eventName, function ()
                {
                    common();

                });
            }

            bind('zoom_changed');
            bind('center_changed');
            bind('tilesloaded');
            bind('idle');

            function common()
            {
                var bounds = map.getBounds();
                var southWest = bounds.getSouthWest();
                var northEast = bounds.getNorthEast();
                var getcentre=bounds.getCenter();
                var ne = map.getBounds().getNorthEast();
                var sw = map.getBounds().getSouthWest();
                var zoom=map.getZoom();
                var centre_lat=getcentre.lat();
                var centre_long=getcentre.lng();
                var myLatlng=new google.maps.LatLng(centre_lat,centre_long);
                var mapProp =
                {
                    center: new google.maps.LatLng(centre_lat,centre_long),
                    zoom:zoom,
                    maxZoom: 8,
                    minZoom:2,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };

            }
        }

        google.maps.event.addDomListener(window, 'resize', initialize);
        google.maps.event.addDomListener(window, 'load', initialize);

    </script>

Inside Body tag: Inside Body标签:

            <div id='location-canvas' style='width:100%;height:500px;'>

            </div>

You Don't need to include bellow two lines because you already define a callback function with http://maps.googleapis.com/maps/api/js?key="+myKey+"&sensor=false&callback=initialize 您不需要包含两行,因为您已经使用http://maps.googleapis.com/maps/api/js?key="+myKey+"&sensor=false&callback=initialize定义了一个回调函数

So either use 所以要么使用

<script src="http://maps.googleapis.com/maps/api/js?key="+__API-Key__+"&sensor=false" type="text/javascript"></script>

Without function call, put it directly on document 没有函数调用,直接将其放在文档上

or Remove 或删除

   google.maps.event.addDomListener(window, 'resize', initialize);
   google.maps.event.addDomListener(window, 'load', initialize);

eg: 例如:

<script src="http://maps.googleapis.com/maps/api/js?key="+__API-Key__+"&sensor=false"></script>

<script>

    function initialize()
    {
        var laa=-34.397;
        var lonn= 150.644;
        var mapOptions =
        {
            zoom: 7,
            center: new google.maps.LatLng(laa, lonn),
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            maxZoom: 8,
            minZoom:2
        };

        var map = new google.maps.Map(document.getElementById('location-canvas'),
            mapOptions);

        var marker = new google.maps.Marker({
            map: map,
            draggable: false,
            position: new google.maps.LatLng(laa, lonn)
        });

        function bind(eventName)
        {
            google.maps.event.addListener(map, eventName, function ()
            {
                common();

            });
        }

        bind('zoom_changed');
        bind('center_changed');
        bind('tilesloaded');
        bind('idle');

        function common()
        {
            var bounds = map.getBounds();
            var southWest = bounds.getSouthWest();
            var northEast = bounds.getNorthEast();
            var getcentre=bounds.getCenter();
            var ne = map.getBounds().getNorthEast();
            var sw = map.getBounds().getSouthWest();
            var zoom=map.getZoom();
            var centre_lat=getcentre.lat();
            var centre_long=getcentre.lng();
            var myLatlng=new google.maps.LatLng(centre_lat,centre_long);
            var mapProp =
            {
                center: new google.maps.LatLng(centre_lat,centre_long),
                zoom:zoom,
                maxZoom: 8,
                minZoom:2,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };

        }
    }

    google.maps.event.addDomListener(window, 'resize', initialize);
    google.maps.event.addDomListener(window, 'load', initialize);
</script>

        <div id='location-canvas' style='width:100%;height:500px;'>

        </div>

This should works fine. 这应该没问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM