这是我的代码......我尝试放置事件监听器,但控制台说:
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>
答案 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.Marker。markers
不是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函数,以便它不会抱怨。我取消了对事件监听器的注释。它奏效了。