Я пытаюсь понять javascript, и как переменные передаются, но я не слишком хорошо себя чувствую. Я пытаюсь обновить маркеры карты google с помощью ajax, но ничего не происходит.область значений маркеров для карт google (gmaps4rails gem)
Я отправляю форму, которая посылает некоторые переменные контроллеру. Некоторые вещи обрабатываются, и он отвечает .js на ...
find.js.erb
$('#collapseTwo ul').html("<%= j render partial: 'events/sidebar', collection: @events %>");
alert(<%= raw @hash.to_json %>);
clearMarkers();
markers = handler.addMarkers(<%= raw @hash.to_json %>, {
draggable: false
});
рендер пожаров в порядке, так что все работает, но я не могу чтобы удержать маркеры, чтобы обновить карту. Это предупреждение показывает [object Object]
, так что, скорее всего, это правильно, но никаких действий на маркеры нет.
Я сделал некоторые изменения в marker.coffee
в виде
clear: ->
@getServiceObject().setMap(null)
show: ->
@getServiceObject().setVisible(true)
hide: ->
@getServiceObject().setVisible(false)
, так что clearMarkers();
работ. Это в другом файле, где я храню некоторые другие действия
events.js.coffee
jQuery ->
...
...
@clearMarkers = ->
for marker in Gmaps.store.markers
marker.clear()
Gmaps.store.markers = []
... Так я называю карту первоначально в с ...
jQuery ->
handler = Gmaps.build 'Google'
handler.buildMap {
provider: {
minZoom: 3
}, internal: {id: 'map'} }, ->
markers = handler.addMarkers($('#map').data('events'),
draggable: false
flat: false
)
#moves map to marker clicked + open infowindow
$(document).on 'click', '#sideBar li', ->
markers[$(this).data('marker')].panTo()
markers[$(this).data('marker')].click()
Эта функция внизу ... единственный способ доступа к массиву markers
был потому, что он находился внутри функции handler.buildMap
. Итак, должна ли переменная markers
быть глобальной? Как еще я могу действовать на них?
Кроме того, переменная handler
... это, как мне кажется, должно быть доступно во всем мире. Я попытался вручную поставить @hash
на .addMarkers()
, но обработчик не построил маркеры.
Boom! Ты спасатель жизни. Это отличный способ сохранить переменные, спасибо! И я вижу всю функцию глобальной функции с определением функции с помощью '@clearMarkers = ->'. Когда я повторяю один и тот же поиск снова и снова, маркер уходит и возвращается правильно, но если я увеличиваю или уменьшаю масштаб, есть куча маркеров вокруг того, где он должен быть ... как его копии. Является ли моя функция 'clear' корректной? – Dudo
Я добавил '@getServiceObject(). ServiceObject = null' в функцию clear ... то же самое. – Dudo
Это еще один вопрос, но подсказка: его отношение к маркерам сохранения кластеров – apneadiving