0

マーカーの非表示/表示を担当する関数があるため、マップに表示されるすべてのマーカーを含む変数で 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.markersvariableのすべてのマーカー。
  • 変数にマップしGmaps.mapます。

失敗するまでの手順:

  1. マップの読み込み - OK (すべてのマーカーが正しく読み込まれました);
  2. > Gmaps.handler.removeMarkers(Gmaps.markers)- OK (すべてのマーカーが正しく隠されています);
  3. > Gmaps.handler.addMarkers(Gmaps.markers)- OK (すべてのマーカーが正しく表示されました);
  4. > Gmaps.handler.removeMarkers(Gmaps.markers)- 失敗!(マーカーは引き続き表示されます);

2.1.2バージョンを使用しています。それに対する修正はありますか?

ありがとう

4

2 に答える 2

0

問題はマーカーの保存にあると思います。新しいマーカーを追加すると、古いマーカーが上書きされます。試す

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

代わりに新しいマーカーを追加します。

于 2015-02-08T05:18:25.180 に答える
0

私の plunkr hereによると、gmaps4railsにはバグはありません。

独自の機能に問題があるように感じます(おそらくextendを使用しないでください)。次のものに置き換えます。

marker.json  = marker_json

それらは含まれていないので、これ以上は言えません。

于 2014-09-15T07:08:13.313 に答える