无法使用angular 2在Google地图的信息窗口中触发点击事件

时间:2018-07-19 06:49:34

标签: javascript jquery google-maps google-maps-api-3 infowindow

我正在尝试在Google地图的信息窗口中进行点击。我无法使用以下代码来实现。有人可以告诉我我在哪里做错了吗?

loadmap(){
    var locations = [];var map;
     for(var i=0;i<this.data.length; i++){
         locations.push({
             'location_name':this.data[i].location_name,
         });
     }
     var marker; var icon;
     map   = new google.maps.Map(document.getElementById('map'), {
        zoom: 2,
        center: new google.maps.LatLng(40.4637, 3.7492),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    map.markers = [];
    var infowindow = new google.maps.InfoWindow({
       enableEventPropagation: true
    });
     for (var i = 0; i < locations.length; i++) {         
            marker = new google.maps.Marker({
                position: new google.maps.LatLng('lat', 'lng'),
                map: map,
            });              
            google.maps.event.addListener(marker, 'click', (function(marker, i) {          
                return function() {              
                    infowindow.setContent(
                        '<span>'+locations[i].location_name+'</span><br/>'+
                        '<input type="button" id="infowindow_submit" name="submit" value ="submit"/>'
                    );
                    infowindow.open(map, marker);
               };
            })(marker, i));
            google.maps.event.addListener(infowindow, 'domready', function() {
                $("#infowindow_submit").submit(function() {
                    console.log("hi!");
                });
            });
    }
}  

1 个答案:

答案 0 :(得分:1)

我认为您的问题是您正在使用按钮,但尝试添加表单事件监听器。

$("#infowindow_submit").submit(() => console.log("hi!"))适用于表单,但不适用于单个按钮。

您要寻找$("#infowindow_submit").click(() => console.log("hi!"))吗?

我相信您的评论可能是矛盾的,这就是让我注意到上述问题的原因。

  

当我单击infoWindow中的按钮时,没有任何反应。点击   标记的处理程序正在执行,但信息窗口尚未准备就绪   部分

如果您单击“信息”窗口中的按钮,则domready事件应该已经触发。我以为您根本无法打开“信息窗口”。猜猜我第一次没看错……您那里没有console.log,也没有说您试图在此处放置断点。您拥有的console.log位于submit事件内部,但是您没有domready事件函数内部。希望domready实际上被解雇了。