2012-02-29 23 views
-1

空港の異なる場所の地図を設定しています。私のマーカーは正しい場所にあります。Google Maps APIv3複数のマーカー/複数の情報ウィンドウ

情報ウィンドウを追加しようとしましたが、すべての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

インフォウィンドウごとに必要なデータを、インデックス番号でアクセスできる何らかの種類の配列に格納する必要があります。

インデックス番号は、ユーザーがマーカーをクリックするとアクセスされます。次に、索引番号を使用して、情報ウィンドウの内容をオンザフライで構築し、情報ウィンドウを開きます。

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

関連する問題