gmaps4rails replaceMakers闪烁效果

时间:2011-12-28 07:09:20

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

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

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

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

我尝试修改addmarkers功能,但没有任何好处。

1 个答案:

答案 0 :(得分:2)

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