2012-12-09 76 views
0

我試圖關閉信息窗口至極顯示街景。當我點擊地圖時,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; 


} 
+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

工作人員採取信息窗口VAR爲全局變量,謝謝! –