来自JS库的谷歌地图事件

Google Map Events from JS Library

本文关键字:谷歌地图 事件 JS 来自      更新时间:2023-09-26

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

YouTube 教程 - 使用谷歌地图 API 08 标记事件的自定义交互式地图

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

_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');
  }
}); 

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

我找到了解决方案:

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

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