单击时如何获取id并删除它?谷歌地图V3

时间:2016-09-14 17:49:45

标签: javascript google-maps web

这是我的代码......我尝试放置事件监听器,但控制台说:

  

markers.addListener不是函数

这是我的代码..... https://jsfiddle.net/1LwLczgr/1/

//The problem :(
markers.addListener('click', function() {
      var marker = this;
      alert(this.id+"alasddsasdkasdl");
});



<!--My API-->
<script async defer type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBZiX9quA0AJiAFuoxrogRYObImmbCa-6g&signed_in=true&libraries=geometry,places&callback=initMap"></script>

4 个答案:

答案 0 :(得分:1)

标记是一个Array对象。 我们不能这样做:

$.each(markers, function(index, value) {
// Add listener here? 
});

参考: http://api.jquery.com/jquery.each/

或者在纯JavaScript中:

for(var i = 0; i < markers.length; i++)
{
// Add listener here? 
}

编辑 - 问题 - 然后在DeleteMarkers()函数内部?

  • 通过循环删除侦听器
  • 清除阵列

这不会有帮助吗?请试一试,让我们知道结果。

答案 1 :(得分:1)

您只能将Google地图点击监听器添加到支持点击事件的Google地图对象中(例如google.maps.Markermarkers不是google.maps.Marker,而是Array }。Array没有方法.addListener

一种选择是在创建标记时将点击监听器添加到标记:

// Adds a marker to the map and push to the array.
function addMarker(location) {
  var marker = new google.maps.Marker({
    id:count,
    position: location,
    map: map
  });
  marker.addListener('click', function() {
    var marker = this;
    alert(this.id+"alasddsasdkasdl");
  });
  markers.push(marker);
  countmarkers ++;
  count ++;
}

答案 2 :(得分:0)

而不是$scope.position = []; $scope.choice = []; angular.forEach($scope.stock.otherPicNames, function(image){ $scope.position.push({'image' : image, 'position' : 0 }); $scope.choice.push(0); }); 键入addListener()

答案 3 :(得分:0)

在修好一些东西后,它对我有用。脚本标记需要关闭。标记[0]上需要addListener(不在标记数组本身上)。我移动了initMap函数,以便它不会抱怨。我取消了对事件监听器的注释。它奏效了。