gmaps4rails: нельзя держать окно информации открытым на панорамировании или увеличении - PullRequest
0 голосов
/ 18 ноября 2011

Я перезагружаю маркеры на карте, используя replaceMarkers (). Кажется, все работает отлично, но после попытки нескольких методов, я не могу держать открытым открытое окно при масштабировании или панорамировании. Это особенно раздражает, когда пользователь нажимает на запись, указанную на боковой панели, которая на мгновение вызывает информационное окно - и исчезает только после того, как панорамирование остановлено.

Я пытался использовать visibleInfoWindow для отслеживания окна и повторного его открытия после сброса маркеров, но при этом вновь открытое информационное окно больше не закрывается.

Я предполагаю, что мне чего-то не хватает. Заранее спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

В случае, если другие выиграют, мне удалось сохранить окно открытым, выполнив следующие действия после вызова replaceMarkers ():

  • Проверьте, открыто ли окно, используя свойство visibleInfoWindow из объекта карты
  • если окно открыто, сравните предыдущий объект окна с новыми окнами / маркерами
  • , если тот же маркер / окно все еще находится в границах, я вызываю infowindow.open (Gmaps.map.map, marker.serviceObject)

обратите внимание, что я не мог просто использовать маркер в открытом вызове.Мне нужно было использовать serviceObject, который имеет обязательные свойства точки привязки и смещения.

0 голосов
/ 18 июня 2012

В качестве примера к этому у меня есть довольно грубый и готовый код (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
...