2

当用户平移地图,我提出和Ajax请求到服务器,并获得所有落入新范围,东西几乎等同于这里描述了被标记:Dynamically load Google Maps Markers with gmaps4railsgmaps4rails replaceMakers闪烁效果

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

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

我试着修改addmarkers函数,但没有什么好的东西出来。

+0

有趣。请在github上创建一张票,我会在下周修补宝石。 – apneadiving 2011-12-28 08:27:22

回答

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() 
+0

太棒了! +1。虽然没有看到任何拉请求:) – apneadiving 2011-12-30 19:39:28

+0

我不确定这是否足够通用,因为我正在厌倦我生成的ID。 – cashmere 2011-12-31 20:01:57

+0

哦,对。用iphone第一眼看不出来。我会记住这个问题。 – apneadiving 2011-12-31 23:31:36