在我的页面中,我至少有3个 Ajax 调用,并且所有调用都会调用单独的函数,这些函数会在同一个Google地图上创建一些新标记。
在脚本的顶部,我定义了initMap
函数,该函数在全局map
变量中创建基本地图。
但是现在,有时一切都有效,但有时它会在从至少一个ajax方法调用函数时显示以下错误。
InvalidValueError:setMap:不是Map的实例;而不是StreetViewPanorama的实例
我相信这可能是因为jQuery Ajax方法的异步特性。
为了解决这个问题,我尝试检查是否定义了 map ,只要在Ajax方法中有响应。所有这些都不会显示地图是未定义的。但仍有问题。
所以我甚至无法检查地图是否不存在,再次调用 initMap()。此外,我不能一次又一次地调用map,因为它将替换其他函数的所有标记。
这是帮助您理解的基本代码结构:
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地图加载了两次,默认情况下为1(PrestaShop),我正在添加一个。现在我可以使用默认加载的地图,但它显示缺少Google地图API密钥的错误。那么如何在不加载地图两次的情况下附加该密钥呢?
答案 0 :(得分:0)
如果你的代码在下面,
var marker= new google.maps.Marker({
position: position,
});
试试这个。
var marker = new google.maps.Marker({
position : position,
setMap : map
});