2

我根本不懂 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&#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);
});

我会稍微解释一下。Invadermoose 是获取地图标记的用户,因此我将其用作 ID 以保持其井井有条。所以 var InvadermooseLL 基本上是 Invadermoose LatLang,InvadermooseMKR 是 Invadermoose Marker。它只是帮助我保持井井有条。

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

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

4

1 回答 1

0

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

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

于 2012-10-03T18:39:59.557 回答