2011-12-28 122 views
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