当用户平移地图时,我向服务器发出ajax请求并获取属于新边界的所有标记,这与此处描述的几乎相同:Dynamically load Google Maps Markers with gmaps4rails
我的问题是,当我使用replaceMarker时,地图上的所有标记都会被重新创建,因此每个标记都会闪烁。这真让我烦恼。
如果我使用addMarkers,我没有得到闪烁效果,但我的侧边栏被搞砸了,因为; 1)平移后离开边界的标记不会从我的标记列表中删除。 2)一些重复项被添加到我的标记列表中 - 标记分为新旧边界的交集。
我尝试修改addmarkers功能,但没有任何好处。
答案 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()