2014-01-16 3 views
1

데이터베이스에서 데이터를 가져 오는 Google지도가 있습니다. 모든 것이 정상적으로 작동하지만 맵의 특정 지점 위로 마우스를 가져 가면 팝업되는 정보창을 제외하고는 (이 지점은 데이터베이스에서 가져 오는 집합의 일부이므로 모든 지점에 숫자가있을 수 있습니다. 주어진 단계).처음 Google지도 정보 창이 표시되지 않습니다.

내 코드는 다음과 같습니다

function getwindow(id) { 
    if(infowindows[id] == null || infowindows[id] == '') { 
     $.ajax({ 
      url: "view/"+id, 
      type: "post", 
      async: true, 
      beforeSend: function() { 
      }, 
      success: function(data) { 
       data = JSON.parse(data); 
       if(data.success) { 
        infowindows[id] = '<b>Info For: </b>' + data.Clinic.official_clinic_name + '<br/>' + 
        '{{image}}<br/>' + 
        'Tel: ' + data.Clinic.telephone; 
       } else { 
        alert('error'); 
       } 
      } 
     }); 
    } 
} 


var infowindow = new google.maps.InfoWindow({ 
    content: '' 
}); 
<?php foreach($jsdata as $data) : ?> 
    infowindows[<?php echo $data['id'];?>] = ''; 
    google.maps.event.addListener(marker_<?php echo $data['id'];?>, 'mouseover', function() { 
     getwindow(<?php echo $data['id'];?>); 
     infowindow.setContent(infowindows[<?php echo $data['id'];?>]); 
     infowindow.open(map,marker_<?php echo $data['id']?>); 
    }); 

    google.maps.event.addListener(marker_<?php echo $data['id'];?>, 'mouseout', function() { 
     infowindow.close(); 
    }); 
<?php endforeach; ?> 

나는 데 문제가 팝업 정보창이 처음을 표시하지 않습니다. 내가 두 번 쳐다 보면 완벽하게 작동합니다. 처음으로 어떻게 보이게 만들 수 있습니까?

+1

첫 번째 시도에서 infoWindow의 콘텐츠를 사용할 수 있습니까? 이벤트 핸들러의 정의를 코드의'성공 :'부분으로 옮기면 어떨까요? –

+0

그 트릭을 했어. 그냥 답변으로 추가하고 upvote거야. 내가 한 일은 마커를 다음과 같이 변수로 전달합니다 :'getwindow (, marker _ );' – Albert

답변

1

$.ajax 비동기로 인해 정보 첫 번째 mouseover 이벤트가 발생했을 때 전화 정보 창을 사용할 수 없습니다. 이벤트 처리기의 정의를 success: 코드 부분으로 이동해야합니다.

관련 문제