API Googlemaps очень медленный при инициализации из window.onload - PullRequest
0 голосов
/ 15 августа 2011

Чтобы избежать «неуказанной ошибки», то есть 7/8, я недавно переместил логику инициализации для реализации GoogleMaps v3 с поддержкой JSON из встроенного после $ (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 ...
                    };

1 Ответ

0 голосов
/ 16 августа 2011

window.onload - подходящее место для этого, если вы загружаете API синхронно, в противном случае ваш код может выполняться до загрузки API Карт.

Если это занимает 10 - 15 секунд, то, вероятно, вы также загружаете кучу других ресурсов. window.onload не будет выполняться, пока все не завершит загрузку (например, все скрипты в тегах скрипта).

Одним из решений может быть асинхронная загрузка Maps API V3 (см .: http://code.google.com/apis/maps/documentation/javascript/basics.html#Async).. После этого вы можете приступить к созданию карты, как только API загрузится.

Альтернативным решением является асинхронная загрузка всего, что вам не нужно, чтобы быть готовым, как только пользователь заходит на сайт, или загрузка ваших ресурсов из более быстрых местоположений (например, загрузка jQuery из CDN Google, а не из вашего собственного сервер).

...