Skip to content

Commit 73fb1d3

Browse files
authored
Merge pull request #371 from davidwebca/v4
Fix Google Maps api load order + provide an extra callback for devs to hook into
2 parents 4fe3fd0 + 3720cd3 commit 73fb1d3

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/services/EmbedService.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ private function _embedGoogle (EmbedOptions $options, Settings $settings): strin
105105
{
106106
$view = Craft::$app->getView();
107107
$callbackName = 'init_' . $options->id;
108+
$loadedCallbackName = $options->id . '_loaded';
108109

109110
$mapTypeId = match ($settings->mapTiles)
110111
{
@@ -146,11 +147,6 @@ private function _embedGoogle (EmbedOptions $options, Settings $settings): strin
146147
'callback' => $callbackName,
147148
]);
148149

149-
$this->_js(
150-
'https://maps.googleapis.com/maps/api/js?' . $params,
151-
['async' => '', 'defer' => '']
152-
);
153-
154150
$js = <<<JS
155151
let {$options->id};
156152
@@ -165,10 +161,15 @@ function {$callbackName} () {
165161
}
166162
JS;
167163

168-
$css = $this->_getCss($options);
169164

165+
$view->registerScript($js, View::POS_END);
170166

171-
$view->registerJs($js, View::POS_END);
167+
$this->_js(
168+
'https://maps.googleapis.com/maps/api/js?' . $params,
169+
['async' => '', 'defer' => '', 'onload' => "typeof {$loadedCallbackName} != 'undefined' && {$loadedCallbackName}()"]
170+
);
171+
172+
$css = $this->_getCss($options);
172173
$css && $view->registerCss($css);
173174

174175
return '<div id="' . $options->id . '"></div>';

0 commit comments

Comments
 (0)