Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api 谷歌地图点击处理程序在页面加载时触发_Api_Google Maps_Events - Fatal编程技术网

Api 谷歌地图点击处理程序在页面加载时触发

Api 谷歌地图点击处理程序在页面加载时触发,api,google-maps,events,Api,Google Maps,Events,我正在构建一个谷歌地图应用程序,在地图外面有一个指南针的图像。每个指南针点都位于图像地图上,并且有自己的id。我希望根据单击的指南针点更改45°方向 在google mapsinitialize函数中,我有一行: google.maps.event.addDomListener(document.getElementById('compassSouth'), 'click', map.setHeading(180)); 但是,该处理程序在页面加载时被激发,之后不会响应。这不是由于图像映射造成的

我正在构建一个谷歌地图应用程序,在地图外面有一个指南针的图像。每个指南针点都位于图像地图上,并且有自己的id。我希望根据单击的指南针点更改45°方向

在google maps
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
函数改为匿名函数(现在回到与原始代码更相似的代码):


太好了,我很高兴这很有帮助。我又添加了一些评论,主要是为了未来的读者,因为听起来你们现在已经走上正轨了。太好了,我很高兴这对你们有所帮助。我又添加了几条评论,主要是为了未来的读者,因为听起来你现在已经走上正轨了。