在我的頁面中,我至少有3個Ajax調用,它們都調用單獨的函數,在同一個Google地圖上創建一些新標記。如何正確調用initMap來成功訪問地圖對象?
在腳本的頂部,我定義了initMap
函數,該函數在全局變量map
中創建基本映射。
但是現在,有時候一切正常,但有時它會顯示以下錯誤,當從至少一個ajax方法調用函數時。
InvalidValueError:setMap:不是Map的一個實例;而不是StreetViewPanorama的一個實例
我相信這可能是因爲jQuery Ajax方法的異步性質。
爲了解決這個問題,我試着檢查是否地圖被定義與否,每當Ajax方法響應。他們都不會像地圖一樣顯示未定義。但仍然存在問題。
所以我甚至不能檢查map是否存在,請再次調用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瀏覽器。
有什麼辦法可以成功地做到這一點嗎?
編輯:
我得到了真正的問題。我的代碼中一切都很好。問題是谷歌地圖加載了兩次,默認情況下是1(由PrestaShop)和我加入的一個。現在我可以使用默認加載的地圖,但它顯示Google地圖API密鑰丟失的錯誤。那麼如何在不加載地圖兩次的情況下追加該鍵?
我得到了真正的問題。我的代碼中一切都很好。問題是Google地圖加載了兩次,默認情況下是1(PrestaShop),我添加了一個。現在我可以使用默認加載的地圖,但它顯示Google地圖API密鑰丟失的錯誤。那麼如何在不加載地圖兩次的情況下追加該鍵? –
爲什麼Google地圖加載了兩次?如果你的googlemap加載腳本在下面,第一個源代碼「initMap();」是不必要的。 '