我根本不懂javascript,但我设法让地图上的所有东西都工作,除了这一件事。我正在为一个论坛的一个功能工作,成员向我发送他们的城市和州,然后我将它们添加到地图中。这就是我所拥有的:http://l4ptester.solidwebhost.com/L4p.html 如果你点击几个地图标记,你会发现你可以随时打开多个infoWindows,我不想要那样。我只想让infoWindow一次打开。因此,如果我点击佛罗里达州的标记,然后点击加利福尼亚州的标记,那么佛罗里达州的标记就会关闭。
以下是我的代码中地图标记的条目:
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);
});
我会解释一下。 Invadermoose是获取地图标记的用户,因此我将其用作ID来保持其有条理。所以var InvadermooseLL基本上是Invadermoose LatLang,InvadermooseMKR是Invadermoose Marker。它只是帮助我保持井井有条。
现在,在脚本的底部我有所有'点击'功能。在我看来它会关闭其他成员标记,但它不起作用。我在Stack溢出的某个地方读到了这样做的方法,但它不会工作。
我基本上为每个拥有地图标记的用户重复相同的代码,我只需使用我的识别前缀(LL,MKR,IW)和一些“点击”功能将Id更改为用户名。
答案 0 :(得分:0)
这比您想象的要容易,在示例中您可以发现解决方案是重用InfoWindow
。这比为每个用户创建一个新的更清晰。如果只有一个InfoWindow
,您只需更新它的位置,InfoWindow
在旧位置关闭,然后再在新位置打开。
这样做的副作用是,不可能同时打开多个InfoWindow
,因为实际上只有一个。{/ p>