2012-12-09 2 views
0

스트리트 뷰를 표시하는 정보 창을 닫으려고합니다. 지도를 클릭하면 정보 창이 닫히지 않습니다. 또한 다른 마커를 클릭하면 infowindow가 열리고 이전 infowindow에서 streetview가 열립니다. 그래서 infowindow가 닫히고 streetview를 표시해야합니다. 여기에 코드가 있습니다. 도움을 주셔서 감사합니다.정보창을 닫고 스트리트 뷰를 표시 할 수 없습니다.

감사합니다.

function paradascamiones() { 
google.maps.event.addListener(map, 'click', function() { 
infowindow.close(); 
}); 
var Boton = document.getElementById('Boton').value; 
var textboxImei = document.getElementById('imei').value; 
var textboxFecha = document.getElementById('fecha').value; 
var textboxFechaFin = document.getElementById('fechaFin').value; 
var textboxDesdeHora = document.getElementById('desdeHora').value; 
var textboxHastaHora = document.getElementById('hastaHora'). 
downloadUrl("paradas.asp?imei="+textboxImei+"&fecha="+textboxFecha+" "+textboxDesdeHora+"&fechaFin="+textboxFechaFin+" "+textboxHastaHora, 
function(data) { 
    var xml = xmlParse(data); 
    var markersParadas = xml.documentElement.getElementsByTagName("marker");  
    var position = []; 


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

    var lat = parseFloat(markersParadas[i].getAttribute("lat")); 
    var lng = parseFloat(markersParadas[i].getAttribute("lng")); 
    var myLatlngParadas = new google.maps.LatLng(lat, lng); 

    var fechaInicio = markersParadas[i].getAttribute("fechaInicio"); 
    var fechaFinal = markersParadas[i].getAttribute("fechaFinal"); 
    var diferencia = markersParadas[i].getAttribute("diferencia"); 


    var datearray = diferencia.split("/"); 

    var newDate = datearray[1] + '/' + datearray[0] + '/' + datearray[2]; 
    var aFecha = new Date(newDate); 
     var hours = aFecha.getHours(); 
     var minutes = aFecha.getMinutes(); 
     var seconds = aFecha.getSeconds(); 

    var markerParadas = createMarkerParadas(myLatlngParadas, hours, minutes, seconds, fechaInicio); 
    myMarkersParadas.push(markerParadas); 


    }//finish loop 



}); //end download url 

} 


function createMarkerParadas(myLatlngParadas, hours, minutes, seconds, fechaInicio) { 


    var contentString = '<div id="content" style="width:350px;height:300px;"> </div>'; 
    var infoWindow = new google.maps.InfoWindow({ 
     content: contentString 
    }); 
    var image2 = '/artworks/icons/stop.png'; 
    var markerParadas = new google.maps.Marker({ 
    position: myLatlngParadas, 
    map: map, 
    title: " my info ", 
    icon: image2 

}); 

    google.maps.event.addListener(markerParadas, "click", function() { 

      infoWindow.open(map, markerParadas); 

      var pano = null; 
      google.maps.event.addListener(infoWindow, 'domready', function() { 

       if (pano != null) { 
        pano.unbind("position"); 
        pano.setVisible(false); 
       } 
       pano = new google.maps.StreetViewPanorama(document.getElementById("content"), { 
        navigationControl: true, 

        enableCloseButton: false, 
        addressControl: true, 
        linksControl: false 
       }); 
       pano.bindTo("position", markerParadas); 
       pano.setVisible(true); 
      }); 

      google.maps.event.addListener(infoWindow, 'closeclick', function() { 
       pano.unbind("position"); 
       pano.setVisible(false); 
       pano = null; 
      }); 

    }); 



    return markerParadas; 


} 
+0

이 루틴을 호출하는 코드 또는 더 복잡한 바이올린을 제공 할 수 있습니까? 콘텐츠를 마커와 연결하는 고전적인 문제처럼 들립니다. 일반적으로 함수 클로저에 의해 고정됩니다. 다음은 정보 창에서 스트리트 뷰가있는 [작업 예제] (http://www.geocodezip.com/v3_StreetViewInInfoWindowB.html)입니다. – geocodezip

+0

안녕 geocodezip. 나는 마커 함수를 호출하는 함수를 추가했다. –

답변

1

코드에서 최소한 infowindow 변수를 전역 범위로 정의하는 코드를 변경해야합니다.

코드

function createMarkerParadas() { 
    var infoWindow = new google.maps.InfoWindow({ 
     content : contentString 
    }); 
    ... 
} 

변경이 좋아하는;

<script type="text/javascript"> 
    var map, infowindow; 
    ... 

    function createMarkerParadas() { 
     infoWindow = new google.maps.InfoWindow({ 
      content : contentString 
     }); 
     .... 
    } 
</script> 
+0

infowindow var을 글로벌 변수로 가져 가려고합니다. 감사합니다! –