我正在使用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
我在做什么错了?
答案 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'
}))
答案 1 :(得分:-1)
您需要删除{customData: 'foo'}
:
map.on('click', 'somelayer', customFunction);
mapbox-gl尝试将您的对象作为函数执行。