将数据对象传递给火灾事件

时间:2018-08-01 01:02:54

标签: javascript mapbox mapbox-gl-js

我正在使用Mapbox GL和文档状态:

  

将侦听器添加到指定的事件类型。

     

参数:

     

类型(字符串)要添加监听的事件类型。

     

侦听器(函数)触发事件时要调用的函数。调用监听器函数,并将数据对象传递给   fire,扩展了target和type属性。

来源:https://www.mapbox.com/mapbox-gl-js/api/#evented#on

所以,如果我这样做:

map.on('click', 'somelayer', { customData: 'foo' }, customFunction);

我得到一个错误:

Uncaught TypeError: i.call is not a function

我在做什么错了?

2 个答案:

答案 0 :(得分:2)

您可以使用绑定:

map.on('click', customFunction.bind({customData: 'foo'}))

或者,如果要保存上下文,可以使用包装器:

function extend(fn, data) {
  return (e) => {
    e.data = data
    fn(e)
  }
}
map.on('click', extend(customFunction, {
  customData: 'foo'
}))

[http://jsfiddle.net/tu570Lgz/]

答案 1 :(得分:-1)

您需要删除{customData: 'foo'}

map.on('click', 'somelayer', customFunction);

mapbox-gl尝试将您的对象作为函数执行。