Javascript 有没有办法确定点击了哪个谷歌地图标记?

Javascript 有没有办法确定点击了哪个谷歌地图标记?,javascript,google-maps,google-maps-markers,Javascript,Google Maps,Google Maps Markers,下面的代码在json对象上循环以在google地图上放置标记。这很好用 function displayMarkers(data){ for(var i = 0; i < data.Lat.length; i++){ var point = new GLatLng(data.Lat[i],data.Lng[i]); marker = new GMarker(point); map.addOverlay(marker);

下面的代码在json对象上循环以在google地图上放置标记。这很好用

function displayMarkers(data){
    for(var i = 0; i < data.Lat.length; i++){
        var point = new GLatLng(data.Lat[i],data.Lng[i]);
        marker = new GMarker(point);
        map.addOverlay(marker);

            // here's the problem
        GEvent.addListener(marker, "click", function(){
            alert(data.Name[i]);
        });
    }
}
函数显示标记(数据){
对于(变量i=0;i
问题是,每个标记总是以最后一个值“i”响应。我一直在试图找出一种方法来识别被单击的标记,以某种方式从数据对象获取正确的信息

我正在考虑在创建时创建一个标记数组,以便根据标记位置循环,但我觉得这样做效率很低

一如既往,非常感谢您的帮助。

非常简单

    GEvent.addListener(marker, "click", function(o){
            alert(o);
    });
这三种不同的元素

GEvent.addListener(map, "click", function(overlay, latlng, overlaylatlng) {
  // overlay = GOverlay or null
  // latlng = GLatLng
  // overlaylatlng = GLatLng or null
});
如果用户没有单击覆盖,“覆盖”和“覆盖”将为空


更新:如果您想从地图中获取政府路线,您必须将侦听器添加到地图(而不是标记)。只返回GLatLng。

上面的解决方案似乎只返回标记的坐标,这并不能解决我的问题。也许我做错了什么

然而,我解决这个问题的方法是像这样简单地向标记添加一个属性

更新:上述解决方法是一种方法,但更简单的方法是将事件附加到地图上,如评论中所述

GEvent.addListener(map, "click", function(marker, point){
    alert(marker);
});

地图支持onTap事件,该事件传递所选标记的索引,请参阅示例:

Ah,您完全正确。问题是我们将侦听器添加到标记,而不是映射。如果您将侦听器添加到映射中,它将按预期工作-您只需添加一次侦听器。
GEvent.addListener(map, "click", function(marker, point){
    alert(marker);
});