Javascript 谷歌地图上每个标记的信息窗口
我在infowindow中为使用parse中的一些地理点生成的动态标记实现一些数据时遇到了一些问题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,
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的最后一个值。很抱歉,对您的问题理解不够。什么