gmaps4rails replaceMaker: эффект мерцания - PullRequest
2 голосов
/ 28 декабря 2011

Когда пользователь просматривает карту, я делаю и ajax-запрос к серверу и получаю все маркеры, попадающие в новые границы, что-то почти идентичное описанному здесь: Динамическая загрузка маркеров Google Maps с помощью gmaps4rails

Моя проблема в том, что когда я использую replaceMarker, все маркеры на карте воссоздаются, поэтому каждый из них мигает по одному.Это действительно раздражает меня.

Если я использую addMarkers, я не получаю эффекта мерцания, но моя боковая панель закручена, потому что;1) Маркеры, которые остаются за границами после панорамирования, не удаляются из моего списка маркеров.2) Некоторые дубликаты добавлены в мой список маркеров - маркеры, которые пересекаются со старыми и новыми границами.

Я попытался изменить функцию addmarkers, но ничего хорошего из этого не вышло.

1 Ответ

2 голосов
/ 30 декабря 2011

Так я изменил функцию addMarkers.Сравнивая new_markers со старыми, чтобы определить, какие из них удалить, и оставить уже существующие в покое.

addMarkers : (new_markers) ->
  #update the list of markers to take into account
  @resetSidebarContent()
  added_markers = (marker for marker in new_markers when ($.grep(@markers, (a) -> a.id == marker.id).length == 0))
  removed_markers = (marker for marker in @markers when ($.grep(new_markers, (a) -> a.id == marker.id).length == 0))
  for marker in removed_markers
    @clearMarker(marker)
    @markers.remove(marker)
  @markers = @markers.concat(added_markers)
    #put markers on the map
  @create_markers()
  @adjustMapToBounds()
...