Google Maps API — медленная загрузка javascript

Я использую API Карт Google для отображения карты на определенной странице.

Проблема в том, что файл http://maps.google.com/maps?file=api..... иногда загружается очень медленно, что снижает производительность страницы, потому что остальная часть JavaScript сначала загружается при готовности документа, что редко достигается, потому что браузер блокируется в ожидании файла от Google.

Я попытался переместить файл JavaScript из тега <head> под свой контент. Но остальная часть JavaScript никогда не запускается, потому что браузер ожидает файл от Google.

Есть ли способ обойти это, или кто-нибудь еще сталкивался с такой же проблемой? Это началось недавно, и я понятия не имею, почему.

Это мой код, если кому интересно:

<script type="text/javascript" src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true&amp;key=ABQIAAAAa24xicak8_ghHX58i7La7hRFh9iM79SNC94rOejOtdMRvQmJiBS6Uv5F_1BNSh9ZuSzFXyekHISgew">    </script>
<script type="text/javascript" src="/js/maps.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
    // Google Maps
    initialize();

    // Other JavaScript comes here....

   });
</script>

Если я получу доступ

http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true&amp;key=ABQIAAAAa24xicak8_ghHX58i7La7hRFh9iM79SNC94rOejOtdMRvQmJiBS6Uv5F_1BNSh9ZuSzFXyekHISgew

Файл загружается мгновенно.


person janhartmann    schedule 17.05.2009    source источник
comment
Вы используете Firebug? Я обнаружил, что firebug снижает производительность моего приложения, когда я работал с API карт, и если я просматривал страницу в браузере без firebug, все было в порядке.   -  person    schedule 18.05.2009
comment
Я видел то же самое, но только в firefox и при работе с локальным хостом. IE и Chrome были в порядке.   -  person RichH    schedule 18.05.2009
comment
Я использую Firebug для отладки. Я могу попробовать отключить его и посмотреть, поможет ли это.   -  person janhartmann    schedule 18.05.2009
comment
Отключение firebug решило проблему! Это странно. Firebug работает последние недели без проблем. Спасибо, Пол - вы можете ответить на этот пост, и я принимаю ваш.   -  person janhartmann    schedule 18.05.2009


Ответы (3)


Сейчас это довольно старый вопрос - решение состояло в том, чтобы отключить firebug (по крайней мере, для меня).

person janhartmann    schedule 17.11.2009
comment
Да, для меня тоже, я исследовал как в FF, так и в IE9, и когда закрыл Firebug в FF и Инструменты разработчика в IE9, карта загружается, спасибо! - person Adil; 13.05.2015

Используйте API Ajax от Google. С некоторых пор ко всем сервисам Google можно получить доступ через JavaScript API. Это модульная система, вам нужно только включить библиотеку JSAPI, а затем вы можете динамически загружать нужные вам модули — это не заблокирует ваш сайт.

<script type="text/javascript"        
        src="http://www.google.com/jsapi?key=ABCDEFG"></script>
<script type="text/javascript">
google.load("maps", "2");
google.setOnLoadCallback(function() {
    // Your logic goes here.
    // It will be run right after the maps module was loaded.
});
</script>

Дополнительные сведения см. в документации для разработчиков по JSAPI.

person viam0Zah    schedule 24.05.2009

Что касается оптимизации JavaScript: всегда размещайте JS в самом низу даже вашего скрипта Maps API. Я не могу придумать какой-либо веской причины иметь какой-либо JS в голове.

person Nael El Shawwa    schedule 23.05.2009
comment
Я знаю, что это устарело, но если вы используете Google Maps API или require.js, рекомендуется поместить их наверху. - person skaterdav85; 03.11.2011
comment
У меня не было проблем с ним внизу для обоих. - person Nael El Shawwa; 12.03.2012
comment
Если вы поместите свой javascript внизу, он не запустится до тех пор, пока страница не отобразится, что нежелательно в ряде сценариев. - person Muhd; 28.06.2012
comment
потому что это должно быть в голове! только недавно программисты начали переносить свои скрипты на тело. я все еще думаю, что скрипты должны быть в голове, скомпилированы заранее, но инициализированы позже. просто потому, что я не люблю смешивать контент и исходный код. - person Pizzaiola Gorgonzola; 14.03.2014