Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript谷歌地图一次只能运行一个函数,其余的不能_Javascript_Google Maps Api 2 - Fatal编程技术网

javascript谷歌地图一次只能运行一个函数,其余的不能

javascript谷歌地图一次只能运行一个函数,其余的不能,javascript,google-maps-api-2,Javascript,Google Maps Api 2,一开始,我想告诉大家我没有使用JavaScript的经验。我找到了脚本并更改为我想要的。我尝试在两个不同的视图上加载GoogleMap(我在Codeigniter上工作),但只加载了一个map。当我转到第二视图时,地图不会显示。代码如下: 标题: <body onload='mapaStart()' onunload='GUnload()'> 视图中的地图加载,其中的id为“Rejestracja”,但在第二个视图中的id为“doMeeting”,而不是。如果我在JavaScri

一开始,我想告诉大家我没有使用JavaScript的经验。我找到了脚本并更改为我想要的。我尝试在两个不同的视图上加载GoogleMap(我在Codeigniter上工作),但只加载了一个map。当我转到第二视图时,地图不会显示。代码如下:

标题:

<body onload='mapaStart()' onunload='GUnload()'> 

视图中的地图加载,其中的id为“Rejestracja”,但在第二个视图中的id为“doMeeting”,而不是。如果我在JavaScript中将此元素反转为相反的位置,| |可以用作“OR”运算符,也可以用于返回第一个非“falsy”值。在代码中:

mapa = new GMap2(document.getElementById("Rejestracja" || "doMeeting"));
对document.getElementId的函数调用将只检索“Rejestracja”,因为它是条件中返回truthy值的第一个值。(truthy表示非false、null、未定义、0、空字符串或NaN)

我不确定google maps api是如何工作的,但如果它不能接受两个DOM元素,则需要将每个地图存储在自己的变量中:

var map1 = new GMap2(document.getElementById("Rejestracja"));
var map2 = new GMap2(document.getElementById("doMeeting"));
或者将代码提取到自己的函数中,并传入每个DOM元素

更新:这里有一个例子,我的意思是-这将只工作,如果你的mapa变量没有使用的函数以外的地方初始化

function mapaStart()
{
    if(GBrowserIsCompatible())  
    {       
        var map1 = new GMap2(document.getElementById("doMeeting"));
        var map2 = new GMap2(document.getElementById("Rejestracja"));
        initializeMap(map1);
        initializeMap(map2);
    }
}

function initializeMap (mapa) 
{
    mapa.setCenter(new GLatLng(52.348763181988076, 18.61083984375), 6, G_HYBRID_MAP);
    mapa.addControl(new GLargeMapControl());  
    mapa.addControl(new GMapTypeControl()); 

    // remainder of original mapaStart function goes here
}

我希望这有帮助

但是剩下的代码呢?因为对这个特定变量“mapa”的威胁很少。我应该复制所有函数并将此复制函数更改为var map2,将原始值更改为map1吗?mapaStart函数外是否有使用mapa变量的代码?好的,我已经用一个例子更新了我的答案,说明了我所说的提取代码的意思。发布的代码使用的是不推荐的且已关闭的版本——该版本不应用于新代码。因此,您能帮助我将此代码细化到当前版本吗?这非常有用……以防您没有注意到(或者可能是复制粘贴错误),您有两个id为“lat”的输入和两个id为“lng”的输入。我怀疑这是造成你的问题,但它可能会导致其他问题以后。
mapa = new GMap2(document.getElementById("Rejestracja" || "doMeeting"));
mapa = new GMap2(document.getElementById("Rejestracja" || "doMeeting"));
var map1 = new GMap2(document.getElementById("Rejestracja"));
var map2 = new GMap2(document.getElementById("doMeeting"));
function mapaStart()
{
    if(GBrowserIsCompatible())  
    {       
        var map1 = new GMap2(document.getElementById("doMeeting"));
        var map2 = new GMap2(document.getElementById("Rejestracja"));
        initializeMap(map1);
        initializeMap(map2);
    }
}

function initializeMap (mapa) 
{
    mapa.setCenter(new GLatLng(52.348763181988076, 18.61083984375), 6, G_HYBRID_MAP);
    mapa.addControl(new GLargeMapControl());  
    mapa.addControl(new GMapTypeControl()); 

    // remainder of original mapaStart function goes here
}