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