0

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

最好的祝福。

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;


 }
4

1 回答 1

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>
于 2012-12-10T03:33:27.037 回答