谷歌地图点击页面加载时触发器处理

时间:2013-05-11 02:16:59

标签: api google-maps events

我正在构建一个Google地图应用,并在地图外面有一个指南针的图像。每个罗盘点都在图像映射上,并具有自己的ID。我希望45°方向改变,具体取决于点击的罗盘点。

在Google地图initialize功能中,我有这一行:

google.maps.event.addDomListener(document.getElementById('compassSouth'), 'click', map.setHeading(180));

但是,该处理程序在页面加载时触发,并且在此之后不响应。这不是由于图像映射 - 如果元素是按钮,则会发生相同的行为。

我有一个相同格式的另一个处理程序响应按钮按下,这很好。

1 个答案:

答案 0 :(得分:1)

代码完全按照您的要求执行:执行代码时,它会立即调用map.setHeading(180)函数

为了清晰起见,让我们逐行写出来:

var element = document.getElementById('compassSouth');
var listener = map.setHeading( 180 );
google.maps.event.addDomListener( element, 'click', listener );

正如您所看到的,此代码会在您编写该代码的位置立即调用map.setHeading(180),然后从该函数传递返回值(我现在正在调用{{1} }}}进入listener

addDomListener()根本不会返回任何值 - 或换句话说,它会返回map.setHeading(180),因此undefinedlistener

undefined看到addDomListener()值并忽略它:它根本没有设置任何监听器!

您需要做的是将引用传递给undefined中的函数。你可以这样轻松地做到这一点:

addDomListener()

或者正如您经常看到的那样,您可以将function compassClick() { map.setHeading( 180 ); } var element = document.getElementById('compassSouth'); google.maps.event.addDomListener( element, 'click', compassClick ); 函数设置为匿名函数(现在返回到更像原始函数的代码):

compassClick