У меня есть несколько маркеров, загружаемых из файла JSON в API Google Maps v3. Однако он загружает только последнюю запись JSON в информационное окно карты на последнем маркере. Другие маркеры не отображают информационное окно при нажатии.
Я нашел следующие похожие посты, но все еще не могу заставить это работать.
.. 3979486 / InfoWindow-помощь-на-Google-картах-Апи-3
.. 2357323 / пытающиеся к затруднительному многодисковым infowindows к нескольким-маркерам-на-Google-карта-и-файль
Я предполагаю, что это как-то связано с расположением addListener?
Вот что я получил:
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
<script type="text/javascript" src="markerclusterer.js"></script>
<script src="jquery-1.5.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var myLatlng = new google.maps.LatLng(39.632906,-106.524591);
var myOptions = {
zoom: 8,
center: myLatlng,
mapTypeControl: true,
mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
navigationControl: true,
navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("mapdiv"), myOptions);
var url = "eventdata.json";
$.getJSON(url,
function(data){
$.each(data.markers, function(i,markers){
var mylati = data.markers[i].lati;
var mylong = data.markers[i].long;
var mytitle = data.markers[i].title;
var myaddress = data.markers[i].address;
var myhtml = data.markers[i].html;
var mycontent = "<div class='infowin'><h3>" + mytitle + "</h3>" + "<h4>"
+ myaddress + "</h4>" + myhtml + "</div>";
var myLatlng = new google.maps.LatLng(parseFloat(mylati),parseFloat(mylong));
<!--Load Event Markers-->
var markers = [];
for (var i = 0, dataMarkers; dataMarkers = data.markers[i]; i++) {
var latLng = new google.maps.LatLng(dataMarkers.lat, dataMarkers.lng);
var theTitle = dataMarkers.title;
var marker = new google.maps.Marker({
position: latLng,
clickable: true,
title: theTitle,
});
markers.push(marker);
}
var markerClusterer = new MarkerClusterer(map, markers, {
maxZoom: 15,
gridSize: 30,
});
var infowindow = new google.maps.InfoWindow({
content: mycontent
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
});
});
}
</script>
Любая помощь очень ценится