Mam następujący kod i poprawnie tworzy wszystkie znaczniki, które przechowuję, ale potem, gdy klikam na którymkolwiek z nich, tylko ostatnie InfoWindow jest tworzone i pojawia się tylko nad ostatni znacznik, niezależnie od tego, który znacznik kliknę. Mogę sobie wyobrazić, że ma to coś wspólnego z tą samą zmienną, która jest używana w pętli for.Jak utworzyć InfoWindows dla wielu znaczników w pętli For?
{% for record in records %}
//need to do the JSON encoding because JavaScript can't have Jinja2 variables
//I need the safe here because Jinja2 tries to escape the characters otherwise
var GPSlocation = {{record.GPSlocation|json_encode|safe}};
var LatLng = GPSlocation.replace("(", "").replace(")", "").split(", ")
var Lat = parseFloat(LatLng[0]);
var Lng = parseFloat(LatLng[1]);
var markerLatlng = new google.maps.LatLng(Lat, Lng);
var marker = new google.maps.Marker({
position: markerLatlng,
title: {{record.title|json_encode|safe}}
});
var infowindow = new google.maps.InfoWindow({
content: "holding..."
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent({{record.description|json_encode|safe}});
infowindow.open(map, marker);
});
//add the marker to the map
marker.setMap(map);
{% endfor %}
Próbowałem zmieniając detektor zdarzeń do tego:
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent({{record.description|json_encode|safe}});
infowindow.open(map, this);
});
Ponieważ widziałem, że pracował dla innych użytkowników na SO, ale potem nie ma InfoWindows pokazać. Czy są tu jakieś oczywiste błędy?
ah to wszystko to wyjaśnia. dzięki za pomoc, naprawdę to doceniam. – clifgray