0

У меня есть функция, ответственная за скрытие/отображение маркеров, поэтому я решил использовать removeMarkers() и addMarkers() с переменной, которая содержит все маркеры, отображаемые на карте, предотвращая запросы AJAX. Тем не менее, removeMarkers(), кажется, не работает, когда используется после addMarkers() функция:Gmaps4Rails v2 - removeMarkers() не работает после вызова addMarkers()

#/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 %>); 

Итак, у меня есть:

  • Handler на Gmaps.handler переменной;
  • Все метки на Gmaps.markers переменная;
  • Карта на Gmaps.map переменная.

шаги до отказа:

  1. карты Load - OK (Все маркеры нагруженных правильно);
  2. >Gmaps.handler.removeMarkers(Gmaps.markers) - ОК (все маркеры скрыты правильно);
  3. >Gmaps.handler.addMarkers(Gmaps.markers) - ОК (все маркеры показаны правильно);
  4. >Gmaps.handler.removeMarkers(Gmaps.markers) - FAILURE! (Маркеры все еще отображаются);

Я пользуюсь 2.1.2 версии. Есть ли какое-нибудь исправление?

Благодаря

ответ

0

Согласно my plunkr here, нет ошибки с gmaps4rails.

Я чувствую, что у вас есть проблемы с вашими собственными функциями (возможно, не использовать расширения?) И заменить:

marker.json = marker_json 

Я не могу сказать гораздо больше, так как они не включены.

+0

Я думаю, вы можете принять мой ответ правильно? – apneadiving

0

Я думаю, что проблема заключается в сохранении маркеров. Всякий раз, когда вы добавляете новые маркеры, вы перезаписываете старые. Попробуйте

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

вместо этого добавьте новые маркеры.

Смежные вопросы