Я создал цикл for, который рисует несколько слоев KML на карте Google.После этого я пытаюсь добиться добавления одного информационного окна к каждой из полилиний KML.Я могу получить информационное окно для каждой строки, но все они имеют одинаковое содержимое: URL-адрес последнего нарисованного мной файла KML.
Вот код:
function initmap(urls){
// Creating an option object for the map
var myLatlng = new google.maps.LatLng(61.130298, 24.009358);
var options = {
zoom: 7,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
// Initializing the map
var map = new google.maps.Map(document.getElementById('map_canvas'), options);
if(urls != null) {
var ctaLayer = new Array();
var url = new Array();
for(var i=0;i<urls.length;i++) {
url[i] = urls[i];
url[i] = url[i]+"?dummy="+(new Date()).getTime();
ctaLayer[i] = new google.maps.KmlLayer(url[i], {suppressInfoWindows: true});
ctaLayer[i].setMap(map);
// Creating an InfoWindow object
var infowindow = new google.maps.InfoWindow({content: url[i]});
google.maps.event.addListener(ctaLayer[i], 'click', function(kmlEvent) {
var clickPos = kmlEvent.latLng;
var posX = new google.maps.LatLng(clickPos.lat(), clickPos.lng());
infowindow.close();
infowindow.setPosition(posX);
infowindow.open(map);
});
}
}
}
Что такоеЯ делаю что-то не так?
Если я сделаю это (добавьте информационные окна в массив), InfoWindows даже не появится, когда я нажму на KML.
var infowindow = new Array();
infowindow[i] = new google.maps.InfoWindow({
content: urls[i]
});
google.maps.event.addListener(ctaLayer[i], 'click', function(kmlEvent) {
var clickPos = kmlEvent.latLng;
var posX = new google.maps.LatLng(clickPos.lat(), clickPos.lng());
infowindow[i].close();
infowindow[i].setPosition(posX);
infowindow[i].open(map);
});