Javascript 如何在谷歌地图上的标记上动态添加信息窗口?
下面的代码是我对这个问题的设置,它运行良好Javascript 如何在谷歌地图上的标记上动态添加信息窗口?,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,下面的代码是我对这个问题的设置,它运行良好 var map; var markers = []; var contentString = '<h1>This is the Title!</h1>'; function initialize() { var losAngeles = new google.maps.LatLng(34.0500, -118.2500); var mapOptions = { zoom: 10, center: l
var map;
var markers = [];
var contentString = '<h1>This is the Title!</h1>';
function initialize() {
var losAngeles = new google.maps.LatLng(34.0500, -118.2500);
var mapOptions = {
zoom: 10,
center: losAngeles,
disableDefaultUI: true,
mapTypeControlOptions: google.maps.MapTypeId.SATELLITE
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
}
function addMarker(location) {
var markerOptions = {
position: location,
map: map
}
var marker = new google.maps.Marker(markerOptions);
markers.push(marker);
}
function setAllMap(map) {
for (var i = 0; i < markers.length;i++) {
markers[i].setMap(map);
}
}
function clearMarkers() {
setAllMap(null);
}
function showMarkers() {
setAllMap(map);
}
function deleteMarkers() {
clearMarkers();
markers = [];
}
function addInfoWindow() {
infowindow = new google.maps.InfoWindow({
content: contentString
});
}
google.maps.event.addDomListener(window, 'load', initialize);
$(document).ready(function() {
$('#thurs').on('click', function() {
deleteMarkers();
// Loads the markers
addMarker(new google.maps.LatLng(34.0500, -118.2500));
markers[0].infowindow = new google.maps.InfoWindow({
content: contentString
});
console.log(markers[0].infowindow);
google.maps.event.addListener(markers[0], 'click', function() {
this.infowindow.open(map,this);
});
setAllMap(map);
});
})
var映射;
var标记=[];
var contentString='这是标题!';
函数初始化(){
var losAngeles=new google.maps.LatLng(34.0500,-118.2500);
变量映射选项={
缩放:10,
中心:洛杉矶,
disableDefaultUI:true,
mapTypeControlOptions:google.maps.MapTypeId.SATELLITE
};
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
}
功能添加标记(位置){
变量标记选项={
位置:位置,,
地图:地图
}
var marker=新的google.maps.marker(markerOptions);
标记器。推(标记器);
}
函数setAllMap(映射){
对于(变量i=0;i
现在我的问题是添加多个标记和相应的信息窗口。我的代码(jQuery)如下所示:
for(var i=0;i<locations.length;i++) {
if(locations[i].start.slice(0, 10) == "2015-04-10") {
addMarker(new google.maps.LatLng(parseFloat(locations[i].lat), parseFloat(locations[i].lng)));
}
}
console.log(markers);
for(var i=0;i<markers.length;i++) {
markers[i].infowindow = new google.maps.InfoWindow({
content: contentString
});
}
for(var i=0;markers.length;i++) {
console.log(markers[i].infowindow);
google.maps.event.addListener(markers[i], 'click', function() {
markers[i].infowindow.open(map,markers[i]);
});
}
for(var i=0;i问题是您不应该在事件侦听器中引用“i”。当您单击标记时,i是markers.length。以下事件侦听器将工作:
google.maps.event.addListener(markers[i], 'click', function() {
this.infowindow.open(map, this);
});
下面是要演示的代码片段:
>
html,
身体
#地图画布{
身高:100%;
边际:0px;
填充:0px
}
var映射;
var标记=[];
var contentString='这是标题!';
函数初始化(){
var losAngeles=new google.maps.LatLng(34.0500,-118.2500);
变量映射选项={
缩放:10,
中心:洛杉矶,
disableDefaultUI:true,
mapTypeControlOptions:google.maps.MapTypeId.SATELLITE
};
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
添加标记();
}
功能添加标记(位置){
变量标记选项={
位置:位置,,
地图:地图
}
var marker=新的google.maps.marker(markerOptions);
标记器。推(标记器);
}
变量位置=[{
开始:“2015-04-10”,
拉脱维亚:34.0500,
液化天然气:-118.2500
}];
函数addMarkers(){
对于(变量i=0;i
AddInfo Window()的作用是什么是吗?信息窗口的内容从何而来?请提供一份说明您的问题的报告。我想补充一点,这是一个措辞拙劣的问题,在您否决我之前,请允许我道歉。我不希望有人为我写这篇文章,但如果您至少能为我指出正确的方向,那就太好了。我很抱歉我仍然是一个傻瓜,因为我问了一个“糟糕的问题”而被否决,但我正在努力学习,当stackoverflow一次把你关在门外好几天的时候,它肯定不会让这变得更容易。@user3732970只需添加AddInfo Window();函数代码,让我来解决你的问题并注意问题的格式:)