2016-06-21 2 views
-1

페이지가로드되면 모든 정보 창이 열립니다. 나중에 정보 창이 닫히고 다시 열리지 않습니다. 내 실수는 어디 갔지?Google지도 infowindow doesnt work

function init() { 
     var center = {lat: <?=$lat?>, lng: <?=$lng?>}; 
     var map = new google.maps.Map(document.getElementById('map'), { 
      zoom: 12, 
      center: center 
     }); 
     <?php for($i=0; $i<5; $i++){ ?> 
      var myLatLng = {lat:<?=$json[$i]['latitute']?>, lng:<?=$json[$i]['longitute']?>};      
      var marker = new google.maps.Marker({ 
       position: myLatLng, 
       map: map 
      });    
    var contentString = "<table'><tr>"+ 
    "<td><a href='<?=$json[$i]['image'];?></td>"+ 
    "</tr></table>"; 
    var infowindow = new google.maps.InfoWindow({ 
    content: contentString 
    }); 
    google.maps.event.addListener(marker, 'click', function() { 
    infowindow.open(map,this); 
    }); 
    infowindow.close(map,marker);  
    var marker = new google.maps.Marker({ 
    map: map 
    }); 
<?php } ?> 
} 
+0

모든 정보창의 초기 상태를 열리시겠습니까? – duncan

+0

나는 내 문제를 해결했습니다. – Stanley

답변

0

변수를 덮어 쓰는 것처럼 보입니다. PHP 루프는 모든 마커와 정보창에 동일한 이름을 사용합니다. 아마도 각 식별자 뒤에 추가할까요?

var marker<?= $i;?> = ... 
var infowindow<?= $i;?> = ... 

나는 기본적으로 자바 스크립트에 하드 코딩 반복 변수와 5 개 마커와 정보창을 사용하여 루프의 수동 테스트를했다. 이 경우, 나를 위해 일어나는 일은 모든 표식이 정보창 중 하나만 열립니다. 마커 변수와 바인딩중인 이벤트를 덮어 쓰고 있기 때문에 의미가 있습니다.

변수 덮어 쓰기는 내가 처리하려고하는 동작이 아니라는 점을 고려하면 처리해야 할 문제입니다.

+0

나는 내 문제를 해결했습니다. – Stanley