Javascript 更改缩放会使所有隐藏标记重新出现在Google地图(Gmaps4rails)上
我正在使用Gmaps4rails gem围绕一个中心位置构建地图。我使用复选框允许用户显示/隐藏附近的地点标记、餐厅、学校等。问题是,如果我显示一个类别,然后再次隐藏它,然后放大或缩小,这些标记将重新显示,即使它们以前被隐藏过 我的问题和这个问题很相似,虽然我一直没能解决它。我不知道是否有人能告诉我哪里出了问题。我的咖啡脚本如下Javascript 更改缩放会使所有隐藏标记重新出现在Google地图(Gmaps4rails)上,javascript,jquery,ruby-on-rails,google-maps,gmaps4rails,Javascript,Jquery,Ruby On Rails,Google Maps,Gmaps4rails,我正在使用Gmaps4rails gem围绕一个中心位置构建地图。我使用复选框允许用户显示/隐藏附近的地点标记、餐厅、学校等。问题是,如果我显示一个类别,然后再次隐藏它,然后放大或缩小,这些标记将重新显示,即使它们以前被隐藏过 我的问题和这个问题很相似,虽然我一直没能解决它。我不知道是否有人能告诉我哪里出了问题。我的咖啡脚本如下 google_map1_handler = null google_map1_markers = [] $ -> $('#map-tab').click
google_map1_handler = null
google_map1_markers = []
$ ->
$('#map-tab').click (e) ->
unless google_map1_handler?
markers_data = $('#map1').data('markers')
markers = []
handler = Gmaps.build('Google', { markers: { maxRandomDistance: null } })
handler.buildMap { provider: { zoom: 15 }, internal: {id: 'map1'} }, ->
$.each markers_data, (i, marker) ->
if marker.type == 'Property'
markers.push handler.addMarker( marker )
handler.map.centerOn({ lat: marker['lat'], lng: marker['lng'] })
$('.map-checkbox').prop('checked', false)
google_map1_handler = handler
google_map1_markers = markers
# Hide and show map markers with key checkboxes
$('.map-checkbox').click (e) ->
keywords = []
$('.map-checkbox').each (i, el) ->
keywords.push el.id if el.checked == true
toggleMapMarkers(keywords)
toggleMapMarkers = (keywords) ->
markers_data = $('#map1').data('markers')
handler = google_map1_handler
markers = google_map1_markers
# clear old markers
_.each markers, (marker, i) ->
marker.setMap(null)
markers.length = 0
_.each markers_data, (marker, i) ->
if marker.type == 'Property' or marker.type in keywords
markers.push handler.addMarker(marker)
google_map1_markers = markers
基本上,当您使用clusterer时,它存储所有标记
- 缩小时,它会将其贴图设置为
,并添加群集图片null
- 放大时,它会删除簇pic并在标记中再次设置贴图
marker.setMap(null)
时,这还不够:您还必须从集群中删除标记
_.each markers, (marker, i) ->
marker.setMap(null)
handler.clusterer.removeMarker(marker)
但我也需要这个场景,所以只要做:
_.each markers, (marker, i) ->
handler.removeMarker(marker)
甚至:
handler.removeMarkers(markers)
第二个项目很可能是“放大”。感谢您的快速响应!不幸的是,我现在得到了:uncaughttypeerror:Object#没有“removeMarker”方法,它有:升级到2.1.1是的,这就是问题所在!我从2.0.3升级到了最新的2.1.1版本,现在一切正常。谢谢你的帮助@apheading!