Javascript 谷歌地图上每个标记的信息窗口

Javascript 谷歌地图上每个标记的信息窗口,javascript,google-maps,google-maps-api-3,infowindow,Javascript,Google Maps,Google Maps Api 3,Infowindow,我在infowindow中为使用parse中的一些地理点生成的动态标记实现一些数据时遇到了一些问题 function initMap(arlat, arlon, arname, artel, ardesc, aradd, arithmisi) { var map = new google.maps.Map(document.getElementById('map'), { zoom: 6,

我在infowindow中为使用parse中的一些地理点生成的动态标记实现一些数据时遇到了一些问题

 function initMap(arlat, arlon, arname, artel, ardesc, aradd, arithmisi) {

    var map = new google.maps.Map(document.getElementById('map'), {
                            zoom: 6,
                            center: {
                                lat: 37.58,
                                lng: 23.43
                            }
                        });
                        var iconBase = 'http://sourtouki.gr/';

                        for (j = 0; j < arithmisi; j++) {
                            var contentString = '<div id="content">' +
                                '<div id="siteNotice">' +
                                '</div>' +
                                arname[j] +
                                '<div id="bodyContent">' +
                                ardesc[j] + "<br>" + aradd[j] + "<br>" + artel[j] + "<br>" +
                                '</div>' +
                                '</div>';


                            var marker = new google.maps.Marker({
                                position: {
                                    lat: arlat[j],
                                    lng: arlon[j]
                                },
                                map: map,
                                icon: iconBase + 'sourtoukilogo.png',        
                                title: arname[j]
                            });        
                        }
                        var infowindow = new google.maps.InfoWindow({
                            content: contentString
                        });

                        marker.addListener('click', function() {
                            infowindow.open(map, marker);
                        });
                    }
函数初始化映射(arlat、arlon、arname、artel、ardesc、aradd、arithmisi){
var map=new google.maps.map(document.getElementById('map'){
缩放:6,
中心:{
拉脱维亚:37.58,
液化天然气:23.43
}
});
iconBase变量http://sourtouki.gr/';
对于(j=0;j”+aradd[j]+“
”+artel[j]+“
”+ '' + ''; var marker=new google.maps.marker({ 职位:{ lat:arlat[j], 液化天然气:阿隆[j] }, 地图:地图, 图标:iconBase+'sourtoukilogo.png', 标题:阿纳姆[j] }); } var infowindow=new google.maps.infowindow({ 内容:contentString }); marker.addListener('click',function()){ 信息窗口。打开(地图、标记); }); }
通过上面的代码,我将一些表中的数据推送到地图中。标记是在必须的位置创建的,但每当我单击标记时,它只打开一个。 它加载17个标记,但唯一打开的信息窗口是第一个条目,无论我推什么标记。 此外,每个标记的标题都是正确的

更新 我在这张地图上有17个条目,17个地质点(纬度、液化天然气),17个名字,17个描述等。 通过上面的代码,我得到了所有的地理点,并将标记放在地图的正确位置上。当我点击一个标记时,我想把名字和地址显示在信息窗口中。但我想我在for循环中的某个地方出错了。尽管我将所有数据视为必须的数据,但每个地质点都有正确的名称等,但每当我单击一个标记时,只有第一个条目会打开信息窗口,比如说,我单击地图中的第三个标记,如果我按下第12个标记,第一个信息窗口也会打开。 知道为什么会这样吗

更新2

function initMap(arlat, arlon, arname, artel, ardesc, aradd, arithmisi) {



                    // console.log(arlat.length + arlon.lenght);

                    var map = new google.maps.Map(document.getElementById('map'), {
                        zoom: 6,
                        center: {
                            lat: 37.58,
                            lng: 23.43
                        }
                    });
                    var iconBase = 'http://sourtouki.gr/';

                    infowindow = new google.maps.InfoWindow();
                    for (j = 0; j < arithmisi; j++) {

                        var marker = new google.maps.Marker({
                            position: {
                                lat: arlat[j],
                                lng: arlon[j]
                            },
                            map: map,
                            icon: iconBase + 'sourtoukilogo.png',

                            title: arname[j]
                        });
                    var contentString = '<div id="content">' +
                            '<div id="siteNotice">' +
                            '</div>' +
                            arname[j] +
                            '<div id="bodyContent">' +
                            ardesc[j] + "<br>" + aradd[j] + "<br>" + artel[j] + "<br>" +
                            '</div>' +
                            '</div>';

                             google.maps.event.addListener(marker, 'click', function() {
                                    infowindow.setContent(contentString);
                                    infowindow.open(map,this);

                                 });


                    }


                }
函数初始化映射(arlat、arlon、arname、artel、ardesc、aradd、arithmisi){
//console.log(arlat.length+arlon.lenght);
var map=new google.maps.map(document.getElementById('map'){
缩放:6,
中心:{
拉脱维亚:37.58,
液化天然气:23.43
}
});
iconBase变量http://sourtouki.gr/';
infowindow=new google.maps.infowindow();
对于(j=0;j”+aradd[j]+“
”+artel[j]+“
”+ '' + ''; google.maps.event.addListener(标记'click',函数(){ setContent(contentString); 打开(地图,这个); }); } }
在第二次更新中,我在for循环外部创建了一个空的infowindow,在我调用了内部内容之后,现在它打开了所有infowindows,但内部内容相同


一般来说,我在stackoverflow中尝试了很多其他问题的答案,但没有一个解决方案对我的案例有效,如果有人能帮助我,我将不胜感激

for循环仅适用于marker、infowindow和listener,而不适用于marker、infowindow和listener,因为它们是非循环的。请尝试这种方法。。但最重要的是,您需要一个标记数组,而不是这样的单个标记

var markers = [];

for (j = 0; j < arithmisi; j++) {
    var contentString = '<div id="content">' +
        '<div id="siteNotice">' +
        '</div>' +
        arname[j] +
        '<div id="bodyContent">' +
        ardesc[j] + "<br>" + aradd[j] + "<br>" + artel[j] + "<br>" +
        '</div>' +
        '</div>';


    var marker = new google.maps.Marker({
        position: {
            lat: arlat[j],
            lng: arlon[j]
        },
        map: map,
        icon: iconBase + 'sourtoukilogo.png',        
        title: arname[j]
    });        

    k = markers.push(marker);

    var infowindow = new google.maps.InfoWindow({
      content: contentString
    });

    markers[k-1].addListener('click', function() {
      infowindow.open(map, marker);
    });
}
var标记=[];
对于(j=0;j”+aradd[j]+“
”+artel[j]+“
”+ '' + ''; var marker=new google.maps.marker({ 职位:{ lat:arlat[j], 液化天然气:阿隆[j] }, 地图:地图, 图标:iconBase+'sourtoukilogo.png', 标题:阿纳姆[j] }); k=标记。推动(标记); var infowindow=new google.maps.infowindow({ 内容:contentString }); 标记[k-1]。addListener('单击',函数()){ 信息窗口。打开(地图、标记); }); }
信息窗口的内容设置在for循环之外。因此,它总是被设置为contentString的最后一个值。

很抱歉,对您的问题理解不够。什么