Google Maps Api v3 - несколько информационных окон с пользовательским контентом - PullRequest
1 голос
/ 15 апреля 2011

Мне наконец-то удалось добавить несколько маркеров с пользовательскими значками в мою карту Google.

Следующим шагом будет добавление отдельного информационного окна для каждого маркера. К сожалению, я не могу понять, как.

Вот мой сценарий:

<script type="text/javascript">
var offender_locations = [
["10010", "http://localhost/safenation/img/map_offender_icon.png"],
["10001", "http://localhost/safenation/img/map_visitor_icon.png"]
];
var myOptions          = {zoom: 10,center: latlng,mapTypeId: google.maps.MapTypeId.ROADMAP};
var map                = new google.maps.Map(document.getElementById("elementid"), myOptions);
var latlng             = new google.maps.LatLng(0, 0);
var marker;
var i;  
for (i = 0; i < offender_locations.length; i++) { 
var infowindow   = new google.maps.InfoWindow();
var geocoder_map = new google.maps.Geocoder();
var address      = offender_locations[i][0];
var icon         = offender_locations[i][1];
geocoder_map.geocode({'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: map.getCenter(),
icon: icon
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(offender_locations[i][1]);
infowindow.open(map, marker);
}    
})(marker, i));
} else {alert("The requested offender is not mappable !")};});
}
</script>

Я думаю, что сейчас есть проблема с циклом. Когда я пытаюсь:

var icon = offender_locations[1][1];

все значки "map_offender_icon.png"

Когда я использую:

var icon = offender_locations[i][1];

ничего не меняется, и все значки по-прежнему "map_offender_icon.png"

Похоже, var offender_locations [i] [1]; не меняется соответственно. Переменная offender_locations [i] [0]; изменяется соответственно.

Ответы [ 2 ]

0 голосов
/ 02 сентября 2011

Проблема была решена!

Рабочий скрипт:

Javascript Loop - 2-я переменная не отображается

(Извлечено из редактированияк первоначальному вопросу)

0 голосов
/ 15 апреля 2011

Ваша переменная маркера является локальной для вашего цикла for, который не виден вне цикла, поэтому оператор

var infowindow         = new google.maps.InfoWindow();
google.maps.event.addListener(marker, 'click', (function(marker, i)

не может установить прослушиватель для вашего маркера.

Лучший способэто включает инициализацию вашего информационного окна в вашем цикле, чтобы настроить слушателей на все ваши маркеры.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...