2015-01-14 5 views
-1

Я хочу открыть два инфо-окна на одном маркере. В событии 'click' сначала необходимо закрыть infowindow (которое я покажу на карте) и открыть второе окно. При закрытии второй инфоиндустрии я бы хотел открыть первое окно.click and closeclick event on google maps

Вот мой код:

var infowindow = new google.maps.InfoWindow({ 
      content: content, 
      marker:marker, 
      maxWidth: 300, 
      image:image, 
      id:vehicleNo 
     });   
var openinfowindow = new google.maps.InfoWindow({ 
      content: contentone, 
      marker:marker, 
      maxWidth: 300, 
      image:image, 
      id:vehicleNo 
     }); 
google.maps.event.addListener(marker,'click', (function(marker,content,infowindow){   
       return function() {        
        openinfowindow.close();     
        infowindow.setContent(content); 
        infowindow.open(map,marker); 
      };    
     })(marker,content,infowindow)); 

    google.maps.event.addListener(infowindow,'closeclick',function(){ 
      openinfowindow.setContent(contentone); 
      openinfowindow.open(map,marker);         
    }); 
+0

В чем проблема? Вопросы, требующие помощи по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См. [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve). – geocodezip

ответ

0

Как только разница между infowindows является желаемым содержанием, вы можете использовать один InfoWindow и просто переключать содержание:

var infowindow = new google.maps.InfoWindow({ 
     contents:[content,contentOne], 
     marker:marker, 
     maxWidth: 300, 
     image:image, 
     id:vehicleNo 
    });   

    google.maps.event.addListener(marker,'click', (function(marker, 
                  contents, 
                  infowindow){   
     return function() {          
       infowindow.contents=[contents[0],contents[1]]; 
       infowindow.setContent(contents[0]); 
       infowindow.open(map,marker); 
     };    
    })(marker,infowindow.contents,infowindow)); 

    google.maps.event.addListener(infowindow,'closeclick',function(){ 
     var that=this; 
     that.contents.reverse(); 
     that.setContent(this.contents[0]); 
     setTimeout(function(){ 
      that.open(map,marker);}, 
      100);         
    }); 

http://jsfiddle.net/doktormolle/affgpsvt/

+0

Его работа только для одного маркера, но не для нескольких маркеров –

+0

Ваш код не включает несколько маркеров –

+0

Что именно нам нужно делать для нескольких маркеров? PLZ помочь мне –