Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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
Javascript 谷歌地图标记点击事件_Javascript_Google Maps - Fatal编程技术网

Javascript 谷歌地图标记点击事件

Javascript 谷歌地图标记点击事件,javascript,google-maps,Javascript,Google Maps,我想用几个标记填充谷歌地图。当用户单击标记时,我希望它将用户发送到为该位置指定的其他网页。(例如:假设标记代表家,当您单击标记时,它会将您带到一个页面,其中包含有关家的更多信息) 最简单的方法是什么?您需要在每个标记上附加一个事件侦听器。单击处理程序可以将document.location设置为要转到的页面的URL var marker = new GMarker(location); GEvent.addListener(marker, "click", function() { wi

我想用几个标记填充谷歌地图。当用户单击标记时,我希望它将用户发送到为该位置指定的其他网页。(例如:假设标记代表家,当您单击标记时,它会将您带到一个页面,其中包含有关家的更多信息)


最简单的方法是什么?

您需要在每个标记上附加一个事件侦听器。单击处理程序可以将
document.location
设置为要转到的页面的URL

var marker = new GMarker(location);
GEvent.addListener(marker, "click", function() {
    window.location = theURL;
});
map.addOverlay(marker);
因为您可能要在循环中添加标记,所以需要确保每个标记都有自己的URL。由于闭包保留了它们访问的实际变量(而不是它们的值),因此您可能需要将至少
addListener
代码放在它自己的函数中,以创建它自己的作用域。您的循环看起来有点像这样:

function createMarker(location, url) {
    var marker = new GMarker(location);
    GEvent.addListener(marker, "click", function() {
        window.location = url;
    });
    return marker;
}

// Assuming locations is an array of objects with lat, lng, and url properties
for (var i = 0; i < locations.length; i++) {
    var loc = locations[i];
    map.addOverlay(createMarker(new GLatLng(loc.lat, loc.lng), loc.url));
}
函数createMarker(位置、url){
var标记=新的GMarker(位置);
addListener(标记“单击”,函数(){
window.location=url;
});
返回标记;
}
//假设位置是具有lat、lng和url属性的对象数组
对于(变量i=0;i
我相信,从google map v3开始,GEvent还没有被识别出来,下面的内容对我很有用

google.maps.event.addListener(marker, "click", function() {
    window.location = url;
});

这在v3中也非常适合我。我不知道这些事件,首先选择这个例子:)是的,我认为@Mike应该改变公认的答案,由于上一个答案在2010年有效,由于另一个答案中提到的范围问题,此示例无法在循环中工作。此答案的读者应注意,如果您使用的是API的v3,则需要将GEvent替换为google.maps.event。看看另一个投票率高的答案!