【问题标题】:Google Maps Listener in Backbone.js ViewBackbone.js 视图中的 Google 地图侦听器
【发布时间】:2014-03-01 00:01:52
【问题描述】:

我想在 Backbone.ja 应用中的谷歌地图上的标记上切换打开和关闭 Infowindow div。

在我看来,我有一个具有 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。我在这里做错了什么?

另外仅供参考:渲染函数调用了一个 _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);
};

【问题讨论】:

  • map 在那个 addListener 电话中是什么?
  • 我相信“地图”是在 _setMap 函数中创建的谷歌地图对象的实例。
  • 拨打_setMap时有#map-canvas吗?
  • 调用_setmap时地图模板中有#map-canvas。
  • 只是在模板中还是在页面本身?您是否检查过 document.getElementById('map-canvas') 是否返回了您期望的结果?

标签: backbone.js google-maps-api-3 google-maps-markers


【解决方案1】:

应该这样做:

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

【讨论】:

  • 这看起来像。在 addListener 中,您引用了不存在的 map 变量。您将其作为对象属性存储在this.map 中。如果_setMap 是与initialize 相同对象的方法
  • 不幸的是,这仍然没有这样做。
【解决方案2】:

检查您用于地图和标记的变量的范围。它们应该在您尝试在其中添加动作侦听器的函数范围内。

【讨论】:

    猜你喜欢
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多