Javascript Google Maps API信息窗口未收到该值

Javascript Google Maps API信息窗口未收到该值,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我有我的网页,在地图中,我有一些从数据库加载的标记,这些标记加载正确,我有一个addListener('click'),用于每个标记,它用infowindow.open()打开一个小窗口,问题是,我希望这个窗口加载与我单击的标记相对应的DB元素的正确信息,我尝试以不同的方式和使用不同的变量传递值,但我得到的唯一结果是未定义或DB的最后一个元素,我想要的是所选标记的信息 代码如下: <script> var markers = @json($info); var lat = []; v

我有我的网页,在地图中,我有一些从数据库加载的标记,这些标记加载正确,我有一个addListener('click'),用于每个标记,它用infowindow.open()打开一个小窗口,问题是,我希望这个窗口加载与我单击的标记相对应的DB元素的正确信息,我尝试以不同的方式和使用不同的变量传递值,但我得到的唯一结果是未定义或DB的最后一个元素,我想要的是所选标记的信息

代码如下:

<script>
var markers = @json($info);
var lat = [];
var lng = [];
var titol = [];
var adreca = [];
for(var i = 0; i < markers.length; i++){
    lat[i] = markers[i].lat;
    lng[i] = markers[i].lng;
    titol[i] = markers[i].nom_rocodrom;
    adreca[i] = markers[i].adreca;
}
function initMap() {
    var centre = {lat: 41.731047, lng: 1.783573};
    var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 8,
        center: centre
    }); 
    for(var i = 0; i < markers.length; i++){  
        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(lat[i],lng[i]),
            map: map,
            animation: google.maps.Animation.DROP,
            id: i
        });            
        google.maps.event.addListener(marker, 'click', (function(marker, i) {
            return function() { 
                infowindow.open(map, marker);  
            }
       })(marker, i)); 
        var infowindow = new google.maps.InfoWindow({
            content: '<div id="content">'+
                '<div id="siteNotice">'+
                '</div>'+
                '<h3 id="firstHeading" class="firstHeading">'+titol[marker.id]+'</h3>'+    
                '<img src="">'+
                '<div id="bodyContent">'+
                '<p>'+adreca[marker.id]+'</p>'+
                '<button type="button" class="btn btn-primary">'+'<a class ="boto_roco" href="/rocodroms/{{ $rocodrom->id }}">Informacio</a>'+'</button>'+
                '</div>'+
                '</div>',
            maxWidth: 200
        });
    }   
}

我得到的id值是正确的,但是如果我在内容部分中使用marker.id,我会得到未定义的值。

您需要关闭InfoWindow内容的函数(类似/重复问题:)

代码片段:

var markers=[{lat:41.731047,lng:1.783573,nom_rocodrom:“1”,adreca:“First”},
{lat:41.73,lng:1.75,nom_rocodrom:“2”,adreca:“Second”}];
var-lat=[];
var lng=[];
变量titol=[];
肾上腺变量=[];
对于(var i=0;i”+
'' + '' + '' +
'' +
''
infowindow.setContent(content);
信息窗口。打开(地图、标记);
}
})(marker,i));
var infowindow=new google.maps.infowindow({
最大宽度:200
});
}
}
google.maps.event.addDomListener(窗口“加载”,initMap)
html,
身体,
#地图{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}


可能重复我在stackoverflow中没有找到我之前需要的答案,我不认为它在那篇文章中,我需要做的是获取内容部分的值,当我显示de窗口时,我不知道为什么,但它不会显示我选择的标记的信息,即使我通过函数传递它,我得到的不是未定义的,就是我的DB的最后一个值。你需要关闭InfoWindow内容的函数。你的答案@geocodezip很好,如果是重复的问题,很抱歉,如果我必须删除它,我会这样做
return function() { 
            infowindow.open(map, marker);  
        }