代码完全按照您的要求执行:它在您执行代码时立即map.setHeading(180)
调用该函数。
为了清楚起见,让我们逐行写出来:
var element = document.getElementById('compassSouth');
var listener = map.setHeading( 180 );
google.maps.event.addDomListener( element, 'click', listener );
如您所见,此代码会map.setHeading(180)
立即调用您编写该代码的位置,然后它将该函数(我现在正在调用)的返回值传递给.listener
addDomListener()
但map.setHeading(180)
根本不返回任何值 - 或者换句话说,它返回undefined
,所以listener
是undefined
。
addDomListener()
看到该undefined
值并忽略它:它根本没有设置任何侦听器!
您需要做的是将对函数的引用传递到addDomListener()
. 你可以像这样轻松地做到这一点:
function compassClick() {
map.setHeading( 180 );
}
var element = document.getElementById('compassSouth');
google.maps.event.addDomListener( element, 'click', compassClick );
或者正如您经常看到的那样,您可以将该compassClick
函数设为匿名函数(现在回到更像您原来的代码):
google.maps.event.addDomListener(
document.getElementById('compassSouth'), 'click',
function() {
map.setHeading( 180 );
}
);