Вот демонстрация JSFiddle:
Я создал фиктивный массив с информацией, прикрепленной к именованным маркерам. Затем мы создаем глобальную переменную infowindow для хранения одного экземпляра вашего информационного окна. Это информационное окно появится рядом с маркером, по которому щелкнули.
var map;
var global_markers = [];
var markers = [[37.09024, -95.712891, 'trialhead0'], [-14.235004, -51.92528, 'trialhead1'], [-38.416097, -63.616672, 'trialhead2']];
var infowindow = new google.maps.InfoWindow({});
внутри ваших маркеров, заполняющих цикл. По сути, вместо того, чтобы хранить экземпляр информационного окна с каждым маркером, я присоединяю к нему содержимое, а с событием onclick при щелчке маркера я устанавливаю содержимое информационного окна с содержимым, которое мы сохранили, а затем открываю информационное окно рядом с щелкнутым маркер:
for (var i = 0; i < markers.length; i++) {
// obtain the attribues of each marker
var lat = parseFloat(markers[i][0]);
var lng = parseFloat(markers[i][1]);
var trailhead_name = markers[i][2];
var myLatlng = new google.maps.LatLng(lat, lng);
var contentString = "<html><body><div><p><h2>" + trailhead_name + "</h2></p></div></body></html>";
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: "Coordinates: " + lat + " , " + lng + " | Trailhead name: " + trailhead_name
});
marker['infowindow'] = contentString;
global_markers[i] = marker;
google.maps.event.addListener(global_markers[i], 'click', function() {
infowindow.setContent(this['infowindow']);
infowindow.open(map, this);
});
}
person
KJYe.Name 葉家仁
schedule
17.03.2011