0
Google지도에 여러 개의 KML 레이어를 그리는 for-loop를 만들었습니다. 그 후에 각 KML 폴리 라인에 하나의 infoWindow를 추가하려고합니다. 각 줄마다 정보창을 표시 할 수 있지만 모두 같은 내용을 가지고 있습니다. 즉, 내가 그린 마지막 KML 파일의 URL입니다.많은 Google지도 정보창을 사용하여 여러 개의 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);
});
}
}
}
내가 잘못 뭐하는 거지 : 여기
코드인가?이렇게하면 (정보창에 배열을 추가하면) KML을 클릭해도 InfoWindow가 표시되지 않습니다.
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);
});
정보 창문 외에도 KML URL에 추가로 Date 매개 변수를 추가하면 안된다는 점을 지적해야합니다. KmlLayer 인프라의 캐싱 기능을 제거하면지도가 더 느리고 최상의 경우에로드됩니다. KML이 자주 업데이트되는 경우 expires 헤더를 대신 설정하십시오. – jlivni