2017-06-13 2 views
0

私のページには、少なくとも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度読み込まずにそのキーを追加するにはどうすればよいですか?

答えて

0

あなたのコードは以下であれば、

var marker= new google.maps.Marker({ 
    position: position, 
}); 

はこれを試してみてください。

var marker = new google.maps.Marker({ 
    position : position, 
    setMap : map 
}); 
+0

私は本当の問題を抱えています。私のコードではすべてが問題ありません。問題は、Googleマップが2回読み込まれていることです.1つはデフォルトで(PrestaShopで)、もう1つは追加しています。今はデフォルトの読み込み済みマップを使用できますが、GoogleマップAPIキーが見つからないというエラーが表示されます。では、地図を2度読み込まずにそのキーを追加するにはどうすればよいですか? –

+0

Googleマップが2回読み込まれるのはなぜですか? googlemap読み込みスクリプトが下にある場合、最初のソースコード "initMap();"不要です。 '

関連する問題