Api 谷歌地图点击处理程序在页面加载时触发
我正在构建一个谷歌地图应用程序,在地图外面有一个指南针的图像。每个指南针点都位于图像地图上,并且有自己的id。我希望根据单击的指南针点更改45°方向 在google mapsApi 谷歌地图点击处理程序在页面加载时触发,api,google-maps,events,Api,Google Maps,Events,我正在构建一个谷歌地图应用程序,在地图外面有一个指南针的图像。每个指南针点都位于图像地图上,并且有自己的id。我希望根据单击的指南针点更改45°方向 在google mapsinitialize函数中,我有一行: google.maps.event.addDomListener(document.getElementById('compassSouth'), 'click', map.setHeading(180)); 但是,该处理程序在页面加载时被激发,之后不会响应。这不是由于图像映射造成的
initialize
函数中,我有一行:
google.maps.event.addDomListener(document.getElementById('compassSouth'), 'click', map.setHeading(180));
但是,该处理程序在页面加载时被激发,之后不会响应。这不是由于图像映射造成的-如果元素是按钮,则会发生相同的行为
我有另一个处理程序,它以相同的格式响应按钮按下,效果很好 代码执行的正是您告诉它执行的操作:它在执行代码时立即调用
map.setHeading(180)
函数
为了清晰起见,让我们逐行写出:
var element = document.getElementById('compassSouth');
var listener = map.setHeading( 180 );
google.maps.event.addDomListener( element, 'click', listener );
如您所见,此代码在编写代码的地方立即调用map.setHeading(180)
,然后将该函数的返回值(我现在调用listener
)传递到adddomstener()
)
但是map.setHeading(180)
根本不返回任何值——或者换句话说,它返回未定义的,因此侦听器
是未定义的
adddomstener()
看到undefined
值并忽略它:它根本不设置任何侦听器
您需要做的是将对函数的引用传递到adddomstener()
中。您可以像这样轻松地执行此操作:
function compassClick() {
map.setHeading( 180 );
}
var element = document.getElementById('compassSouth');
google.maps.event.addDomListener( element, 'click', compassClick );
或者,正如您经常看到的那样,您可以将compassClick
函数改为匿名函数(现在回到与原始代码更相似的代码):
代码执行的正是您告诉它执行的操作:当您执行代码时,它会立即调用map.setHeading(180)
函数
为了清晰起见,让我们逐行写出:
var element = document.getElementById('compassSouth');
var listener = map.setHeading( 180 );
google.maps.event.addDomListener( element, 'click', listener );
如您所见,此代码在编写代码的地方立即调用map.setHeading(180)
,然后将该函数的返回值(我现在调用listener
)传递到adddomstener()
)
但是map.setHeading(180)
根本不返回任何值——或者换句话说,它返回未定义的,因此侦听器
是未定义的
adddomstener()
看到undefined
值并忽略它:它根本不设置任何侦听器
您需要做的是将对函数的引用传递到adddomstener()
中。您可以像这样轻松地执行此操作:
function compassClick() {
map.setHeading( 180 );
}
var element = document.getElementById('compassSouth');
google.maps.event.addDomListener( element, 'click', compassClick );
或者,正如您经常看到的那样,您可以将compassClick
函数改为匿名函数(现在回到与原始代码更相似的代码):
太好了,我很高兴这很有帮助。我又添加了一些评论,主要是为了未来的读者,因为听起来你们现在已经走上正轨了。太好了,我很高兴这对你们有所帮助。我又添加了几条评论,主要是为了未来的读者,因为听起来你现在已经走上正轨了。