【问题标题】: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。无论我点击什么标记。

有什么想法吗? 谢谢

【问题讨论】:

    标签: javascript google-maps


    【解决方案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 添加到标记的当前引用。

      【讨论】:

      • 对不起,我只是写了整个代码的一部分,你可以看到我使用了一个数组,声明不在我写的部分,事实上我在地图上有标记。在地图上标记不是问题!问题是能够点击并触发“正确”的代码。
      • 不知道我是否说得够清楚,请原谅我的英语不好
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多