gmaps4rails:无法在平移或缩放时打开信息窗口

时间:2011-11-18 04:59:47

标签: ruby-on-rails gmaps4rails

我正在使用replaceMarkers()重新加载地图中的标记。一切似乎都很好,但在尝试了多种方法后,我似乎无法在缩放或平移时保持开放的信息窗口。当用户点击侧边栏中列出的记录暂时显示信息窗口时,这一点尤其令人讨厌 - 只有在平移停止后才会消失。

我尝试过使用visibleInfoWindow来跟踪窗口和窗口。重置标记后重新打开它,但是当这样做时,新打开的信息窗不再关闭。

我猜我只是错过了一些东西。提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果其他人受益,我在调用replaceMarkers()之后通过执行以下操作成功地保持窗口打开:

  • 使用地图对象中的visibleInfoWindow属性检查窗口是否已打开
  • 如果窗口打开,请将上一个窗口对象与新窗口/标记进行比较
  • 如果相同的标记/窗口仍然在边界内,我调用infowindow.open(Gmaps.map.map,marker.serviceObject)

请注意,我无法在公开通话中使用标记。我需要使用具有锚点和安装点的serviceObject。所需的偏移属性。

答案 1 :(得分:0)

作为这个例子,我有一些相当粗略和准备好的代码(coffescript)。我的例子是每次重新定位地图时重新加载的地图。您可以在此处查看此操作:http://www.windunit.com/

drawItems = (theBounds) ->
  url = "/locations.json/?sw_y=" + theBounds.getSouthWest().lng() + "&sw_x=" + theBounds.getSouthWest().lat() + "&ne_y=" + theBounds.getNorthEast().lng() + "&ne_x=" + theBounds.getNorthEast().lat()
  $.get url, (newItemData) ->
    visibleinfo = Gmaps.map.visibleInfoWindow.content if Gmaps.map.visibleInfoWindow
    Gmaps.map.replaceMarkers newItemData
    if visibleinfo
      for marker in Gmaps.map.markers
        if marker.infowindow.content == visibleinfo
          if Gmaps.map.visibleInfoWindow != null
            Gmaps.map.visibleInfoWindow.close()
          marker.infowindow.open(Gmaps.map.serviceObject, marker.serviceObject)
          Gmaps.map.visibleInfoWindow = marker.infowindow   
          return

Gmaps.map.callback = ->
  google.maps.event.addListener Gmaps.map.serviceObject, "idle", ->
    bounds = Gmaps.map.serviceObject.getBounds()
    drawItems bounds