2014-02-04 4 views
0

Я хочу переключать открытие и закрытие разделов Infowindow на маркерах на моей карте google в приложении Backbone.ja.Слушатель Google Maps в Backbone.js View

На мой взгляд, у меня есть функция инициализации, которая имеет google.maps.event.addListener.

function initialize(viewOptions, app) { 
    this.app = app; 
    this.address = ''; 
    this.terms = [ 
     'Food', 
     'Bar' 
    ]; 
    // this.listenTo(this.collection, 'reset', this.render); 
    this.listenTo(this.collection, 'add', this.addmarker); 
    this.render(); 
    google.maps.event.addListener(map, 'click', function() { 
    console.log('Clicked') 
    // infoclicker.call(); 
    }); 
}; 

Этот addListener, похоже, не работает. Когда я нажимаю маркер или даже где-нибудь на карте, он не запускает console.log. Что я здесь делаю неправильно?

Также FYI: есть функция _setMap, вызываемая функцией рендеринга, которая устанавливает карту.

function _setMap(zoom, lat, long) { 
    var mapOptions = { 
     zoom: zoom ? zoom : 15, 
     center: new google.maps.LatLng(lat ? lat : 45.5200,long ? long : -122.6819) 
    }; 

    this.map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
}; 
+0

Что такое 'map' в этом' addListener' вызове? –

+0

Я верю, что «map» - это экземпляр объекта карты google, созданного в функции _setMap. – nilesvm

+0

Есть ли '# map-canvas', когда вы вызываете' _setMap'? –

ответ

1

Это следует сделать это:

google.maps.event.addListener(this.map, 'click', function() { 
    console.log('Clicked'); 
}); 
+0

Похоже на это. В addListener вы ссылаетесь на переменную 'map', которая не существует. Вы храните его как атрибут объекта в 'this.map'. В случае, если '_setMap' является методом того же объекта, что и' initialize' – Krym

+0

К сожалению, это все еще не выполняется. – nilesvm

0

Проверьте объем переменных, которые вы используете для карты и маркер. Они должны быть в рамках функции, в которой вы пытаетесь добавить к ним прослушиватель действий.

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