Ни один из текущих ответов не работает для меня со 100% -ной согласованностью (за исключением Google Loader, который я не пробовал).Я не думаю, что проверки существования google.maps
достаточно, чтобы убедиться, что библиотека завершила загрузку.Вот сетевые запросы, которые я вижу, когда запрашиваются API Карт и дополнительная библиотека мест:
Этот самый первый скрипт определяет google.maps
,но код, который вам, вероятно, понадобится (google.maps.Map
, google.maps.places
), будет отсутствовать, пока не загрузятся некоторые другие сценарии.
Намного безопаснее определить обратный вызов при загрузке API Карт.Ответ @ verti почти верен, но все еще полагается на проверку google.maps
небезопасно.
Вместо этого сделайте следующее:
HTML:
<!-- "async" and "defer" are optional, but help the page load faster. -->
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=API_KEY&callback=mapsCallback">
</script>
JS:
var isMapsApiLoaded = false;
window.mapsCallback = function () {
isMapsApiLoaded = true;
// initialize map, etc.
};