谷歌地图标记事件监听器点击[重复]
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) )