【问题标题】:gmaps4rails replaceMakers flicker effectgmaps4rails replaceMakers 闪烁效果
【发布时间】:2011-12-30 15:02:38
【问题描述】:

当用户平移地图时,我向服务器发出 ajax 请求并获取所有落入新边界的标记,这与此处描述的几乎相同:Dynamically load Google Maps Markers with gmaps4rails

我的问题是,当我使用 replaceMarker 时,地图上的所有标记都会重新创建,因此每个标记都会闪烁一次。这真的让我很烦。

如果我使用 addMarkers,我不会得到闪烁效果,但我的侧边栏会搞砸,因为; 1)平移后超出范围的标记不会从我的标记列表中删除。 2) 一些重复项被添加到我的标记列表中 - 属于新旧边界交集的标记。

我尝试修改 addmarkers 函数,但没有任何好处。

【问题讨论】:

  • 有趣。请在 github 上创建一张票,我会在下周修补 gem。

标签: ruby-on-rails google-maps google-maps-markers gmaps4rails


【解决方案1】:

这就是我更改 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()

【讨论】:

  • 太棒了! +1。虽然没有看到任何拉取请求:)
  • 我不确定这是否足够通用,因为我正在计算我生成的 ID。
  • 哦,对了。用iphone第一眼没看到。我会记住这个问题。
猜你喜欢
  • 2012-04-05
  • 2011-09-07
  • 1970-01-01
  • 2019-01-05
  • 2011-09-06
  • 2013-06-07
  • 2018-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多