Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图标记器点击事件未触发_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌地图标记器点击事件未触发

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

我正在尝试为标记上的单击事件创建一个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 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所示)。是的!我在发帖几小时后注意到了这一点。我在代码中修复了它,它看起来与您的答案非常相似。