Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 Google API V3一次只能打开一个信息窗口_Javascript_Google Api_Infowindow - Fatal编程技术网

Javascript Google API V3一次只能打开一个信息窗口

Javascript Google API V3一次只能打开一个信息窗口,javascript,google-api,infowindow,Javascript,Google Api,Infowindow,我一点也不懂javascript,但我设法让我的地图上的所有东西都工作了,除了这一点。我正在为一个论坛开发一个功能,在这个论坛上,会员向我发送他们所在的城市和州,我将它们添加到地图中。以下是我所拥有的: 如果你点击几个地图标记,你会发现你可以一次打开任意多个信息窗口,我不希望这样。我一次只想打开一个信息窗口。所以如果我点击佛罗里达的一个标记,然后点击加利福尼亚的一个,佛罗里达的一个就会关闭 在我的代码中,地图标记的条目是这样的: var InvadermooseLL = new google.m

我一点也不懂javascript,但我设法让我的地图上的所有东西都工作了,除了这一点。我正在为一个论坛开发一个功能,在这个论坛上,会员向我发送他们所在的城市和州,我将它们添加到地图中。以下是我所拥有的: 如果你点击几个地图标记,你会发现你可以一次打开任意多个信息窗口,我不希望这样。我一次只想打开一个信息窗口。所以如果我点击佛罗里达的一个标记,然后点击加利福尼亚的一个,佛罗里达的一个就会关闭

在我的代码中,地图标记的条目是这样的:

var InvadermooseLL = new google.maps.LatLng(27.321984,-82.527666);
  var contentString = 
    '<div id="content">'+
    '<center> <strong>Invadermoose</strong> </center>'+
        '<img src="http://www.luxury4play.com/customavatars/avatar16771_3.gif">'+
        '<div id="bodyContent">'+
        '<a href="http://www.luxury4play.com/members/invadermoose.html" '+
        'target="_blank">Invadermoose&#39;s L4P Profile</a>'+
        '<br/><font size="2">(Opens in new tab)</font>'+
        'City: Sarasota'+
        'State: Florida'+
        '</div>'+
        '</div>';

var InvadermooseIW = new google.maps.InfoWindow({
    content: contentString
});

var InvadermooseMKR = new google.maps.Marker({
    position: InvadermooseLL,
    map: map,
    title:"Invadermoose"
});

google.maps.event.addListener(InvadermooseMKR, 'click', function() {
    InvadermooseIW.open(map,InvadermooseMKR);
    IrelentlessIW.close(map,IrelentlessMKR);
    Hollywood85IW.close(map,Hollywood85MKR);
    HazeMythIW.close(map,HazeMythMKR);
    jagkidIW.close(map,jagkidMKR);
    DiegoVIW.close(map,DeigoVMKR);
    RaceMindedIW.close(map,RaceMindedMKR);
});
var InvadermooseLL=new google.maps.LatLng(27.321984,-82.527666);
var contentString=
''+
“入侵者无”+
''+
''+
''+
“
(在新选项卡中打开)”+ “城市:萨拉索塔”+ “州:佛罗里达”+ ''+ ''; var inventermooseiw=新建google.maps.InfoWindow({ 内容:contentString }); var inventermosemkr=新的google.maps.Marker({ 位置:InvesterMosell, 地图:地图, 标题:“入侵者” }); google.maps.event.addListener(inventerMosemkr,'click',function(){ 打开(地图,InvesterMoseMKr); IrelentlessIW.close(地图,IrelentlessMKR); Hollywood85IW.关闭(地图,Hollywood85MKR); 关闭(地图,HazeMythMKR); 关闭(地图,jagkidMKR); DiegoVIW.关闭(地图,DeigoVMKR); RaceMindedIW.close(地图,RaceMindedMKR); });
我会解释一下。InventerMose是获取地图标记的用户,因此我使用它作为一个ID来保持它的有序性。所以var InvestorMosell基本上是InvestorMose LatLang,InvestorMoseMKr是InvestorMose标记。它只是帮助我保持它的条理性

现在,在脚本的底部,我有了所有的“单击”功能。在我看来,它会关闭其他成员标记,但它不起作用。我在堆栈溢出的某个地方读到这样做的方法,但它不起作用


基本上,我会为每个有地图标记的用户重复相同的代码,我只是用我的识别前缀(LL、MKR、IW)和一些“单击”功能将Id更改为他们的用户名。

这比您想象的要容易,在示例中,您可以找到的解决方案是重用
信息窗口。这比为每个用户创建一个新的要干净得多。如果只有一个
InfoWindow
,您可以简单地更新它的位置,
InfoWindow
在旧位置关闭,在新位置再次打开


这样做的副作用是,不可能同时打开多个
信息窗口,因为实际上只有一个。

这比您想象的要容易,在示例中,您可以找到的解决方案是重用
信息窗口。这比为每个用户创建一个新的要干净得多。如果只有一个
InfoWindow
,您可以简单地更新它的位置,
InfoWindow
在旧位置关闭,在新位置再次打开

这样做的副作用是,不可能同时打开多个
InfoWindow
,因为实际上只有一个