Google Maps APIv3多个标记/多个信息窗口

时间:2012-02-29 10:35:32

标签: google-maps-api-3

我正在设置不同机场位置的地图。我的标记位于正确的位置。

我一直在尝试添加infowindows,但每个InfoWindow都会显示数组中最后一个标记的相同内容。

如何解决这个问题,以便每个标记都有自己独特的信息?

 `setMarkers(map, airports);
 }

  function setMarkers(map, locations) {

  for (var i = 0; i < locations.length; i++) {
var airport = locations[i];
var myLatLng = new google.maps.LatLng(airport[1], airport[2]);
var marker = new google.maps.Marker({
    position: myLatLng,
    map: map,
html: airport[3],
});

 var contentString = 
<?php
 $num_rows = (count($locations) - 1);

 for($i = 0; $i < count($locations); $i++){

  $query = "SELECT * FROM airports WHERE ident='$locations[$i]'";
  $result = mysql_query($query, $link)
or die('Error querying database.');

  while ($row = mysql_fetch_array($result)) { 

if ($i == $num_rows){

echo "'<div id=\"content\">'+";
 echo "'<div id=\"siteNotice\">'+";
  echo "'</div>'+";
echo "'<b>" . $row['ident'] . "</b></br>'+";
echo "'" . $row['latitude_deg'] . ", " . $row['longitude_deg'] . "' +";
echo "'</div>'+";
  echo "'</div>';";
}
 }
 }
 ?>



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

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

1 个答案:

答案 0 :(得分:1)

您需要将每个信息窗所需的数据存储在索引号可访问的某种数组中。

当用户点击标记时,将访问索引号。然后使用索引号来动态构建信息窗口内容并打开信息窗口。

google.maps.event.addListener(marker, 'click', (function(event, index) {
  return function(){
    infowindow.content = markerArray[index].label + "<br>" + markerArray[index].text;
    infowindow.open(map,this);
  }
})(marker,i));

代码来自:http://srsz750b.appspot.com/api3/polylines-multiple.html