无法关闭infowindow并显示街景

时间:2012-12-09 21:59:33

标签: google-maps-api-3 infowindow google-street-view

我正试图关闭一个显示街景的信息窗口。当我点击地图时,infowindow没有关闭。此外,当我点击其他标记时,信息窗口会打开,但街景视图会在之前的信息窗口中打开。所以我需要关闭infowindow并显示街景。这是代码:谢谢你的帮助。

最好的问候。

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;


 }

1 个答案:

答案 0 :(得分: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>