2015-01-21 4 views
-1

Google Maps API를 사용하여 각 마커에 infoWindow를 추가합니다. 마커는 배열에서옵니다.Google지도의 "마커"배열을위한 여러 "InfoWindow"?

비록 infoWindow는 첫 번째 마커에만 나타나고 다른 마커에는 나타나지 않습니다. 왜? 감사. 당신이 MCVE을 게시하지 않았기 때문에

function set_markers(array) { 
    var mapOptions = { 
     zoom: 13 
    } 
    for (var i = 0; i < array.length; i++) { 
     var single_location = array[i]; 
     var myLatLng = new google.maps.LatLng(single_location[1], single_location[2]); 
     var marker = new google.maps.Marker({ 
      position: myLatLng, 
      map: map, 
      title: single_location[0] 
     }); 
     var infowindow = new google.maps.InfoWindow({ 
      content: "" 
     }); 
    } 

    google.maps.event.addListener(marker, 'click', function() { 
     infowindow.setContent('<h3>'+this.title+'</h3>'); 
     infowindow.open(map,this); 
    }); 
} 
+0

여기에 실제 코드가 있습니까? infowindow가 addListener를 호출 할 때 정의되지 않은 것처럼 보입니다 - 아니면 전역에 표시되지 않습니까? –

+0

@ SteveO'Connor "var infowindow"는 "for"루프 안에 정의됩니다. 그게 당신이 찾고있는거야? – trs

+0

@murid 루프 내에서 마커와 정보창을 만듭니다. 그러나 마커에는 마침표 하나의 이벤트 리스너 만 있습니다. 루프 내에서 이벤트 리스너를 이동하십시오. – duncan

답변

4
var infowindow = new google.maps.InfoWindow(); 

function set_markers(array) { 

    var mapOptions = { 
     zoom: 13 
    }; 

    for (var i = 0; i < array.length; i++) { 

     var single_location = array[i]; 
     var myLatLng = new google.maps.LatLng(single_location[1], single_location[2]); 
     var marker = new google.maps.Marker({ 
      position: myLatLng, 
      map: map, 
      title: single_location[0] 
     }); 

     google.maps.event.addListener(marker, 'click', function() { 
      infowindow.setContent('<h3>' + this.title + '</h3>'); 
      infowindow.open(map, this); 
     }); 
    } 
} 

이 안된이다.

+0

환상적입니다. 고마워. – trs

관련 문제