【问题标题】:Javascript Google maps drawing eventsJavascript 谷歌地图绘图事件
【发布时间】:2016-09-19 14:16:52
【问题描述】:

我在使用 Google 地图 API 提供的事件侦听器时遇到问题。问题是,有些事件会运行,有些则不会。我有一个 setListeners 函数,它在多边形覆盖完成后设置监听器。我想挂钩的事件是:set_at、insert_at、remove_at 和 click。现在点击事件运行正常,但其他的没有。我能做错什么吗?代码如下:

self.setListeners = function () {
        //this click event runs correctly
        google.maps.event.addListener(self.map, 'click', function (e) {
            self.clearSelection();
        })

        console.log(self.drost);
        if (typeof self.drost != 'undefined') {
            self.drost.addListener('set_at', function (e) {
                console.log(e.overlay);
            });
            self.drost.addListener('insert_at', function (e) {
                console.log(e.overlay);
            });
            self.drost.addListener('remove_at', function (e) {
                console.log(e.overlay);
            });
            //this click also runs correctly
            self.drost.addListener('click', function(e){
                self.setSelection(self.drost);
            })
        }
}

【问题讨论】:

  • 是否定义了 self.drost?假设“drost”是多边形,您是否尝试在谷歌地图事件overlaycomplete 上添加监听器? developers.google.com/maps/documentation/javascript/…
  • @JorgeObregon 是的,self.drost 是在 e.overlay 的 overlaycomplete 事件中初始化的。另外,我在 overlaycomplete 回调结束时调用了 setListeners。

标签: javascript google-maps dom-events


【解决方案1】:

需要将事件set_atinsert_atremove_at 添加到多边形的路径,而不是多边形本身。

相关问题:

【讨论】:

    【解决方案2】:

    尝试使用 google.maps.event 添加监听器:

    google.maps.event.addListener(self.drost, 'set_at', function() {
       console.log('it works!');
    });
    

    【讨论】:

    • 顺便说一句,这个答案也可以是一个评论,但代码的 sn-p 将帮助您,而不仅仅是指向 google 文档的链接
    • 这个方法我试过了,还是不行。如果我在 if 之后立即添加控制台日志,例如 console.log(self.drost) 它会记录一个谷歌地图多边形对象。但是当我触发事件时,事件侦听器回调不会运行。但是为努力+1! :)
    猜你喜欢
    • 1970-01-01
    • 2016-05-14
    • 2019-07-31
    • 2014-05-10
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多