Javascript 谷歌地图标记器点击事件未触发
我正在尝试为标记上的单击事件创建一个Google地图侦听器。问题是事件没有触发。下面的代码显示了如何初始化地图并向地图添加标记。我认为必须在初始化中添加事件侦听器Javascript 谷歌地图标记器点击事件未触发,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在尝试为标记上的单击事件创建一个Google地图侦听器。问题是事件没有触发。下面的代码显示了如何初始化地图并向地图添加标记。我认为必须在初始化中添加事件侦听器 //initializing my variables var marker = []; //final markers that wil go on the map //this function loads the map on to the page. function initialize() { var map
//initializing my variables
var marker = []; //final markers that wil go on the map
//this function loads the map on to the page.
function initialize() {
var mapOptions = {
center: {
lat: 0,
lng: 0
},
zoom: 2
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
//listener for clicks on markers
google.maps.event.addListener(marker, 'click', markerClick);
//listener that listens for the map to load before calling the drop function
google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
//this part runs when the mapobject is created and rendered
google.maps.event.addListenerOnce(map, 'idle', function() {
//this part runs when the mapobject shown for the first time
drop();
});
});
}
//drop function
function drop() {
for (var i = 0; i < pictureLocations.length; i++) {
setTimeout(function() {
addMarker();
}, i * 200);
}
}
//add marker function
function addMarker() {
marker.push(new google.maps.Marker({
position: pictureLocations[iterator],
map: map,
draggable: false,
animation: google.maps.Animation.DROP,
id: iterator
}));
iterator++;
}
//初始化我的变量
var标记=[]//最后的标记将出现在地图上
//此函数用于将地图加载到页面上。
函数初始化(){
变量映射选项={
中心:{
纬度:0,
液化天然气:0
},
缩放:2
};
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
//侦听器,用于单击标记
google.maps.event.addListener(标记,'click',markerClick);
//侦听器,用于在调用drop函数之前侦听要加载的映射
google.maps.event.addListenerOnce(映射'tilesloaded',函数(){
//此零件在创建和渲染mapobject时运行
google.maps.event.addListenerOnce(map'idle',function(){
//第一次显示mapobject时,此部件将运行
下降();
});
});
}
//下降函数
函数drop(){
对于(变量i=0;i
当我点击标记时,什么也没发生。我在click函数中有一个导致javascript警报的警报 问题是
标记
数组中 //initializing my variables
var marker = []; //final markers that wil go on the map
//this function loads the map on to the page.
function initialize() {
var mapOptions = {
center: {
lat: 0,
lng: 0
},
zoom: 2
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
//listener that listens for the map to load before calling the drop function
google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
//this part runs when the mapobject is created and rendered
google.maps.event.addListenerOnce(map, 'idle', function() {
//this part runs when the mapobject shown for the first time
drop();
});
});
}
//drop function
function drop() {
for (var i = 0; i < pictureLocations.length; i++) {
setTimeout(function() {
addMarker();
}, i * 200);
}
}
// define markerClick wich was not defined in your code
function markerClick(){
alert('click in the marker'):
}
//add marker function
function addMarker() {
var _marker = new google.maps.Marker({
position: pictureLocations[iterator],
map: map,
draggable: false,
animation: google.maps.Animation.DROP,
id: iterator
});
//listener for clicks on markers
google.maps.event.addListener(_marker, 'click', markerClick);
marker.push(_marker);
iterator++;
}
//初始化我的变量
var标记=[]//最后的标记将出现在地图上
//此函数用于将地图加载到页面上。
函数初始化(){
变量映射选项={
中心:{
纬度:0,
液化天然气:0
},
缩放:2
};
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
//侦听器,用于在调用drop函数之前侦听要加载的映射
google.maps.event.addListenerOnce(映射'tilesloaded',函数(){
//此零件在创建和渲染mapobject时运行
google.maps.event.addListenerOnce(map'idle',function(){
//第一次显示mapobject时,此部件将运行
下降();
});
});
}
//下降函数
函数drop(){
对于(变量i=0;i
此外,你可以考虑阅读更多关于<代码>谷歌.MAP.Stase的应用对象,你会发现<代码>空闲< /代码>事件并不是你所想的。< /P>查看事物的顺序。添加Listner时,标记尚不存在。此外,对于标记数组来说,marker是一个可怕的名称。这是非常令人困惑的。可能的副本可能不会伤害到看@Emmanueldalay谢谢你的评论!我将侦听器放在drop函数调用之后,也放在addMarker函数中,但没有用。侦听器似乎没有挂接。请提供一个演示您的问题的示例,或者查看。什么是
markerClick
?您现有的代码无法工作,因为在创建click侦听器时没有定义标记(如Emmanuel Delay所示)。是的!我在发帖几小时后注意到了这一点。我在代码中修复了它,它看起来与您的答案非常相似。