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