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();函数代码,让我来解决你的问题并注意问题的格式:)