谷歌地图标记事件监听器点击[重复]

Posted

技术标签:

【中文标题】谷歌地图标记事件监听器点击[重复]【英文标题】:Google maps markers event listener click [duplicate] 【发布时间】:2016-11-21 03:54:58 【问题描述】:

我对谷歌地图标记有疑问。实际上,在我的地图上,我添加了几个带有事件侦听器的标记来触发点击事件,但它们都接缝以触发相同的功能。

for(var j = 0; j < lat_long.length; j ++) 
markers[j] = new google.maps.Marker(
    position: latitudeAndLongitudeOne,
    icon: self.icon,
    scaledSize: new google.maps.Size(50, 50),
    map: self.map,
    title: lat_long[i].name
);

google.maps.event.addListener(markers[j], 'click', function() 
    alert(j);
);

我有 alert( x ) ,其中 x 是最后插入的项目的 id。无论我点击什么标记。

有什么想法吗? 谢谢

【问题讨论】:

【参考方案1】:
var markers= [];
for(var i = 0; i < lat_long.length; i ++) 
    var marker = new google.maps.Marker(
        position: latitudeAndLongitudeOne,
        icon: self.icon,
        scaledSize: new google.maps.Size(50, 50),
        map: self.map,
        title: lat_long[i].name
    );
    marker.addListener('click', function() 
        alert(marker.title);
    );
    markers.push(marker);

我不确定,但你可以试试

【讨论】:

【参考方案2】:

这是因为你不能像你那样定义标记。创建一个全局数组并将每个已创建标记的实例推入该数组。

所以: 对于所有标记,定义一个数组以保留每个已创建标记的引用:

var markers = []; //Global Marker Array
function printMarker(lat, lng)
    var marker = new google.maps.Marker(
        position: lat: lat, lng: lng,
        icon: icon,
        map: map
    );
    markers.push(marker);

现在您只需在循环中将 clickListener 添加到标记的当前引用。

【讨论】:

对不起,我只是写了整个代码的一部分,你可以看到我使用了一个数组,声明不在我写的部分,事实上我在地图上有标记。在地图上标记不是问题!问题是能够点击并触发“正确”的代码。 不知道我是否说得够清楚,请原谅我的英语不好

以上是关于谷歌地图标记事件监听器点击[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用我的 JSON 数据在谷歌地图 API 上创建标记?

我们如何在谷歌地图中添加带有点击事件的多个标记? [复制]

如何在集群中的谷歌地图标记上创建点击事件?

使用角度谷歌地图时如何正确处理标记点击事件?

怎么移除地图监听事件

为啥不从谷歌地图标记上的点击事件中调用 navigator.getCurrentPosition (function (position) )