私のページには、少なくとも3 Ajaxがあり、それらのすべてが別の機能を呼び出して、新しいマーカーを同じGoogleマップに作成しています。マップオブジェクトに正しくアクセスするためにinitMapを正しく呼び出す方法は?
スクリプトの先頭には、グローバルmap
変数に基本マップを作成する関数initMap
を定義しました。
しかし、今ではすべてが機能することがありますが、ajaxメソッドの少なくとも1つから関数が呼び出されると、次のエラーが表示されることがあります。
InvalidValueError:setMap:Mapのインスタンスではありません。 StreetViewPanoramaのインスタンスではありません
これは、jQueryのAjaxメソッドの非同期性が原因と考えられます。
これを修正するために、マップが定義されているかどうかを、Ajaxメソッドで応答があったときにチェックしました。地図のように表示されることはありません。しかし、まだ問題があります。
マップが存在しないかどうかを確認することもできません。initMap()にもう一度お電話ください。さらに、地図を何度も呼び出すことはできません。なぜなら、それは他の機能のためのすべてのマーカーを置き換えるためです。ここで
はあなたが理解するのに役立ちます、基本的なコードの構造です:
var map;
function initMap(){
}
initMap();
$.ajax({
//FUNCTION 1 IS CALLED HERE
});
$.ajax({
//FUNCTION 2 IS CALLED HERE
});
$.ajax({
//FUNCTION 3 IS CALLED HERE
});
function Func1(){
}
function Func2(){
}
function Func3(){
}
もう一つ重要なこと:この問題は、より多くのChromeブラウザで観察されます。
これを正常に実行する方法はありますか?
編集:
私は本当の問題を抱えています。私のコードではすべてが問題ありません。問題は、Googleマップが2回読み込まれていることです.1つはデフォルトで(PrestaShop)、もう1つは追加しています。今はデフォルトの読み込み済みマップを使用できますが、GoogleマップAPIキーが見つからないというエラーが表示されます。では、地図を2度読み込まずにそのキーを追加するにはどうすればよいですか?
私は本当の問題を抱えています。私のコードではすべてが問題ありません。問題は、Googleマップが2回読み込まれていることです.1つはデフォルトで(PrestaShopで)、もう1つは追加しています。今はデフォルトの読み込み済みマップを使用できますが、GoogleマップAPIキーが見つからないというエラーが表示されます。では、地図を2度読み込まずにそのキーを追加するにはどうすればよいですか? –
Googleマップが2回読み込まれるのはなぜですか? googlemap読み込みスクリプトが下にある場合、最初のソースコード "initMap();"不要です。 '