コードは、まさにあなたが指示したことを実行しています。つまり、コードを実行するとすぐ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 );
}
);