来自JS Library的Google Map事件

时间:2016-01-22 19:45:02

标签: javascript html google-maps

我一直在谷歌地图上关注YouTube教程,但我遇到了一个无法解决的问题。这可能是一个容易解决的问题,但我是使用HTML和JavaScript的新手,并且不能指责它。

YouTube Tutorial - Custom Interactive Maps with the Google Maps API 08 Marker Events

如何使用以下JS库中的_on函数调用map事件(而不是标记事件)。

_on: function(opts) {
    var self = this;
    google.maps.event.addListener(opts.obj, opts.event, function(e) {
      opts.callback.call(self, e);
    });
  },
  addMarker: function(opts) {
    var marker;
    opts.position = {
      lat: opts.lat,
      lng: opts.lng
    }
    marker = this._createMarker(opts);
    if (opts.event) {
      this._on({
        obj: marker,
        event: opts.event.name,
        callback: opts.event.callback
      });
    }
  },
  _createMarker: function(opts) {
    opts.map = this.gMap;
    return new google.maps.Marker(opts);
  }

在07教程之后,我能够调用map事件,因为_on函数如下:

_on: function(event, callback) {
  var self = this;
  google.maps.event.addListener(this.gMap, event, function(e) {
    callback.call(self, e);
  });
}

我可以在教程7之后使用以下代码从我的Script.js文件中调用map事件函数:

map._on('rightclick', function() {
  alert('Right Click');
});

但是,既然我的_on函数已在教程8中修改过,我似乎无法弄清楚如何调用map事件函数,因为输入变量已更改为opts。

我尝试了以下但是它无法正常工作:

map._on({
  obj: map,
  event: 'dragend',
  callback: function() {
    alert('I was dragged');
  }
}); 

有人可以让我知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

map._on({
  obj: map.gMap,
  event: 'dragend',
  callback: function() {
    alert('I was dragged');
  }
}); 

错误在于我的对象需要声明为'map.gMap',而不是仅仅使用'map'。