Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从window.onload初始化Googlemaps API时速度非常慢_Javascript_Google Maps Api 3_Onload_Init - Fatal编程技术网

Javascript 从window.onload初始化Googlemaps API时速度非常慢

Javascript 从window.onload初始化Googlemaps API时速度非常慢,javascript,google-maps-api-3,onload,init,Javascript,Google Maps Api 3,Onload,Init,为了避免ie 7/8未指定的错误,我最近将基于JSON的GoogleMaps v3实现的初始化逻辑从$document.ready之后的内联移动到从window.onload触发的事件函数中。现在,曾经非常快速的加载现在需要15-20秒以上的时间加载。我知道oninit和onload之间有一些细微的区别,但这似乎是极端的。有什么想法吗 $(document).ready(function(){ var branchitems=[]; var markers=[]

为了避免ie 7/8未指定的错误,我最近将基于JSON的GoogleMaps v3实现的初始化逻辑从$document.ready之后的内联移动到从window.onload触发的事件函数中。现在,曾经非常快速的加载现在需要15-20秒以上的时间加载。我知道oninit和onload之间有一些细微的区别,但这似乎是极端的。有什么想法吗

$(document).ready(function(){

        var branchitems=[];
        var markers=[];
        var map="";

        window.onload = function() {
            var latlng = new google.maps.LatLng(59.5, -100.68);

            var myOptions = {
                                zoom: 3,
                                center: latlng,
                                mapTypeId: google.maps.MapTypeId.TERRAIN 
                            };

            map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

            PopulateMap(map);

        }

        function PopulateMap(map){
            ...  my logic for the JSON portion of the map ...
                    };

如果同步加载API,则window.onload是放置此项的正确位置,否则代码可能会在下载Maps API之前执行

如果这需要10-15秒,那么很可能您也正在加载一堆其他资源。window.onload将在所有内容下载完毕(例如,脚本标记中的所有脚本)后才会执行

一种解决方案可能是异步加载映射API V3,请参见:。然后,您可以在加载API后立即开始构建地图

另一种解决方案是异步加载用户访问站点时不需要准备的任何内容,或者从更快的位置加载资源,例如从Google CDN而不是从您自己的服务器加载jQuery