[解決済み】Google Maps APIがAJAX使用時のみ「Uncaught ReferenceError: google is not defined」を投げる。
2022-01-17 18:28:06
質問
Google Maps APIを使用して地図を表示するページがあります。ページを直接読み込むと、地図が表示されます。しかし、AJAXを使用してページをロードしようとすると、エラーが発生します。
Uncaught ReferenceError: google is not defined
これはなぜでしょうか?
これは地図のあるページです。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
function initialize() {
directionsDisplay = new google.maps.DirectionsRenderer();
var chicago = new google.maps.LatLng(41.850033, -87.6500523);
var mapOptions = { zoom:7, mapTypeId: google.maps.MapTypeId.ROADMAP, center: chicago }
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
directionsDisplay.setMap(map);
}
$(document).ready(function(e) { initialize() });
</script>
<div id="map_canvas" style="height: 354px; width:713px;"></div>
そして、これがAJAXを呼び出したページです。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(e) {
$('button').click(function(){
$.ajax({
type: 'GET', url: 'map-display',
success: function(d) { $('#a').html(d); }
})
});
});
</script>
<button>Call</button>
<div id="a"></div>
</body>
</html>
ご協力ありがとうございました。
解決方法は?
APIは、デフォルトではドキュメントの読み込み終了後に読み込むことができないので、非同期で読み込む必要があります。
マップのあるページを修正します。
<div id="map_canvas" style="height: 354px; width:713px;"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=initialize"></script>
<script>
var directionsDisplay,
directionsService,
map;
function initialize() {
var directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();
var chicago = new google.maps.LatLng(41.850033, -87.6500523);
var mapOptions = { zoom:7, mapTypeId: google.maps.MapTypeId.ROADMAP, center: chicago }
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
directionsDisplay.setMap(map);
}
</script>
詳しくはこちらをご覧ください。 https://stackoverflow.com/questions/14184956/async-google-maps-api-v3-undefined-is-not-a-function/14185834#14185834
関連
-
ajax リクエストが Uncaught TypeError を報告しました。不正な呼び出しエラー
-
jS Ajaxアップロードファイルのエラー "Uncaught TypeError: 不正な呼び出し"
-
[解決済み] Googleマップに "For development purposes only "と表示される。
-
[解決済み] Firefox または Chrome ブラウザから HTTP POST リクエストを手動で送信する方法
-
[解決済み] Google Maps JS API v3 - シンプルな複数マーカーの例
-
[解決済み] Google Maps APIでマウスのスクロールホイールによる拡大縮小を無効にする方法
-
[解決済み] JSONまたは部分的なhtmlを返すASP.NET MVCコントローラのアクション
-
[解決済み】Google Maps API 3 - デフォルト(ドット)マーカーにカスタムマーカー色を付ける
-
[解決済み] XHRリクエストの応答としてリダイレクトを返す
-
[解決済み] Google インスタントはどのように機能するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
jS Ajaxアップロードファイルのエラー "Uncaught TypeError: 不正な呼び出し"
-
ajax+jsonを使用します。
-
AJAXクロスドメイン問題(3つの解決策)
-
[解決済み] データをリクエストペイロードではなく、フォームデータとして投稿するにはどうすればよいですか?
-
[解決済み] CORSです。資格情報フラグが true の場合、Access-Control-Allow-Origin でワイルドカードを使用できない。
-
[解決済み】一部のAJAXコールで "net::ERR_BLOCKED_BY_CLIENT "エラーが発生する。
-
[解決済み】Chromeでのリクエストモニタリング
-
[解決済み】ko.applyBindingsを呼び出して部分ビューをバインドすることはできますか?
-
[解決済み] HTTPリクエストがステータスコード0を返すのはどういう意味ですか?
-
[解決済み] WebサーバーからブラウザにデータをPUSHする方法はありますか?