2010-05-20 5 views
3

아래 코드는지도의 아이콘을 클릭 할 때마다 팝업 창이 열립니다. 그것은 작동합니다Google지도 : 아이콘 아이콘 및 팝업 창

<script type="text/javascript"> 
    function popup() { 
     newwindow = window.open('test.php','Test','width=800,height=500'); 
     newwindow.focus(); 
     return false; 
    } 

    function addMarker(lat, lng, map){ 
     var latlng = new google.maps.LatLng(lat,lng); 
     var marker = new google.maps.Marker({ 
      position: latlng, 
      map: map 
     }); 
     google.maps.event.addListener(marker, 'click', function() { 
      popup(); 
     }); 
    } 

    function initialize() { 
     var myOptions = { 
      center: new google.maps.LatLng(47.367633, 8.542557), 
      zoom: 5, 
      scrollwheel: true, 
      mapTypeId: google.maps.MapTypeId.HYBRID, 
      mapTypeControlOptions:{ 
       style: google.maps.MapTypeControlStyle.DROPDOWN_MENU 
      }, 
      navigationControlOptions:{ 
       style: google.maps.NavigationControlStyle.SMALL 
      } 
     }; 
     var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

     var jsonData = <?php echo $json; ?>; 

     for(var i = 0; i < jsonData.length; i += 1){ 
      addMarker(jsonData[i].lat, jsonData[i].lng, map); 
     } 
    } 
</script> 

나는 마커 아이콘을 추가하는 경우, 그러나, 팝업 창은 여전히 ​​열리지 만 즉시지도가 들어있는 브라우저 창 뒤에, 즉 배경, 사라 :

function addMarker(lat, lng, map){ 
    var latlng = new google.maps.LatLng(lat,lng); 
    var marker = new google.maps.Marker({ 
     position: latlng, 
     icon: 'myicon.png', 
     map: map 
    }); 
    google.maps.event.addListener(marker, 'click', function() { 
     popup(); 
    }); 
} 

이 동작의 이유는 무엇입니까?

답변

1

이것은 흥미로운 문제입니다. 그것은 클릭 이벤트 후 포커스를 요청하는 구글 맵 윈도우와 관련이있는 것 같습니다. 그래도 사용자 정의 마커 아이콘을 사용할 때만 발생하는 것은 이상합니다.

1 밀리 초의 약간의 지연으로 팝업을 시작하여이 문제를 해결할 수 있습니다. Firefox 3.6.3에서 테스트했는데 문제가 해결 된 것 같습니다 :

function popup() { 
    setTimeout(function() { 
     var newwindow = window.open('test.php','Test','width=800,height=500'); 
     newwindow.focus(); 
    }, 1); 
    return false; 
} 

그러나 팝업 창을 사용하지 않는 것도 좋습니다. 많은 사용자가 여전히 악의적이라고 생각하기 때문에 항상 팝업 차단기로 대결하게됩니다.