调用addMarkers()后,Gmaps4Rails v2 - removeMarkers()无效

时间:2014-09-14 21:34:40

标签: ruby-on-rails-3 google-maps-api-3 gmaps4rails gmaps4rails2

我有一个负责隐藏/显示标记的函数,因此我决定使用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变量。

失败的步骤:

  1. 加载地图 - 确定(正确加载所有标记);
  2. &GT; Gmaps.handler.removeMarkers(Gmaps.markers) - 确定(所有标记都已正确隐藏);
  3. &GT; Gmaps.handler.addMarkers(Gmaps.markers) - 确定(所有标记都正确显示);
  4. &GT; Gmaps.handler.removeMarkers(Gmaps.markers) - 失败! (标记仍然显示);
  5. 我正在使用2.1.2版本。它有什么问题吗?

    由于

2 个答案:

答案 0 :(得分:0)

根据my plunkr here,gmaps4rails没有错误。

我觉得你有自己的功能问题(也许不使用扩展?)并替换为:

marker.json  = marker_json

我不能说更多,因为它们不包括在内。

答案 1 :(得分:0)

我认为问题在于保存标记。每当您添加新标记时,都会覆盖旧标记。尝试

Gmaps.markers.push.apply(Gmaps.markers, Gmaps.handler.addMarkers(Gmaps.markers))

代替附加新标记。