我有一个负责隐藏/显示标记的函数,因此我决定使用removeMarkers()和addMarkers()以及一个包含地图上显示的所有标记的变量,以防止AJAX请求。但是,在addMarkers()函数之后使用removeMarkers()似乎不起作用:
#/assets/javascript/general.js.coffee
@buildMap = (markers)->
provider = Gmaps.build(
'Google',
{
builders: { Marker: RichMarkerBuilder},
markers:
clusterer:
gridSize: 50
styles: [
url: "/assets/cluster.png"
textSize: 15
width: 56
height: 56
]
}
)
Gmaps.handler = @clustereredHandler()
Gmaps.handler.buildMap {
provider: provider,
internal: {id: 'map'} }, ->
Gmaps.markers = _.map(markers, (marker_json) ->
marker = Gmaps.handler.addMarker(marker_json)
_.extend marker, marker_json
marker
)
Gmaps.map = Gmaps.handler.getMap()
Gmaps.handler.bounds.extendWith(Gmaps.markers)
Gmaps.handler.fitMapToBounds()
#app/views/stores/index.html.erb
buildMap(<%=raw @hash.to_json %>);
所以,我有:
Gmaps.handler
变量; Gmaps.markers
变量上的所有标记; Gmaps.map
变量。失败的步骤:
Gmaps.handler.removeMarkers(Gmaps.markers)
- 确定(所有标记都已正确隐藏); Gmaps.handler.addMarkers(Gmaps.markers)
- 确定(所有标记都正确显示); Gmaps.handler.removeMarkers(Gmaps.markers)
- 失败! (标记仍然显示); 我正在使用2.1.2
版本。它有什么问题吗?
由于
答案 0 :(得分:0)
根据my plunkr here,gmaps4rails没有错误。
我觉得你有自己的功能问题(也许不使用扩展?)并替换为:
marker.json = marker_json
我不能说更多,因为它们不包括在内。
答案 1 :(得分:0)
我认为问题在于保存标记。每当您添加新标记时,都会覆盖旧标记。尝试
Gmaps.markers.push.apply(Gmaps.markers, Gmaps.handler.addMarkers(Gmaps.markers))
代替附加新标记。