2011-10-11 10 views
8

Ho cercato sul Web in alto e in basso e non sono stato in grado di trovare un tutorial o un esempio di utilizzo di jQuery per svanire un InfoBox/InfoWindow in Google Maps non il contenuto della casella effettiva /finestra. Ecco il mio codice, non sono sicuro di cosa sto sbagliando, ma anche qualcosa non sembra giusto.Google Maps API V3 InfoBox utilizzando jQuery fadeIn e fadeOut

google.maps.event.addListener(marker, 'mouseover', function() { 
    ib.setContent(html); 
    ib.open(map, marker); 
    ib.setValues({type: "point", id: 2}) 

    var idName = marker.get("id"); //I was trying to the id's of the elements here 
    var boxName = ib.get("id"); //to use in my jQuery 

    jQuery(idName).mouseover(function() { 
     jQuery(boxName).fadeIn('slow', function() { 
    // Animation complete 
    }); 
    }); 

}); 
+0

Stavo pensando qualcosa in questo senso, http://themeforest.net/item/the-navigator-premium-wp-location-guide-blog/full_screen_preview/397351. Quindi potrebbe non essere possibile con i controlli nativi di infobox/window, ma forse con una custom? – intheblue25

risposta

11

In realtà è possibile fadein l'infobox, è necessario eseguire l'override della funzione di disegno nelle infobox.js file in questo modo

var oldDraw = ib.draw; 
ib.draw = function() { 
    oldDraw.apply(this); 
    jQuery(ib.div_).hide(); 
    jQuery(ib.div_).fadeIn('slow'); 
} 
+0

che dire di fadeout? quale funzione dovremmo scavalcare? – yulie

-1

Non penso sia possibile perché Google non fornisce un'opzione di animazione.

Provare a recuperare l'elemento Dom non funzionerà. La variabile ib è una classe google.maps.InfoWindow non un elemento DOM. Dal momento che non esiste un'interfaccia pubblica per ottenere l'elemento DOM per la finestra delle informazioni, non sarai in grado di accedervi da solo.

Se si utilizza console.log(ib.get("id")), l'ID non è definito.

+0

John, grazie per aver guardato questo, dare un'occhiata al link che ho fornito nella mia modifica e vedere cosa ne pensi. – intheblue25

+0

Stanno facendo le proprie informazioni. Guardate nella loro iframe il wpnavigator ha uno script attorno alla riga 155. Stanno usando anche questo plugin http://gmap3.net. –

0

Sto usando il marcatore libreria di utilità google con etichetta (http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerwithlabel/1.1.5/docs/examples.html)

È facile usare jquery sulle etichette.

google.maps.event.addListener(marker, "mouseover", function (e) { 
    //console.log(this); this.label.labelDiv_.style.display = 'block'; 
    $(this.label.labelDiv_).fadeIn(); 
}); 

google.maps.event.addListener(marker, "mouseout", function (e) { 
    //this.label.labelDiv_.style.display = 'none'; 
    $(this.label.labelDiv_).fadeOut(); 
}); 
1

Se l'override del metodo draw e applicare il fade in, l'animazione verrà riprodotto anche se si trascina in giro o lo zoom in/out nella map.If non si vuole che ciò accada, si potrebbe applica il metodo fadeIn nel metodo del gestore domready. In questo caso la dissolvenza avrà effetto solo se apri la finestra iniziale.

google.maps.event.addListener(ib, 'domready', function() { 
      jQuery(ib).hide().fadeIn('slow'); 
}) 

;

4

ho provato qualcosa di simile per un sito web. ecco il mio codice (gm-api-v3)

var infowindow = new google.maps.InfoWindow({ 
    content: contentString 
}); 

function iwFadeIn() { 
    infowindow.open(map, marker); 
    var iw_container = $(".gm-style-iw").parent(); 
    iw_container.stop().hide(); 
    iw_container.fadeIn(1000); 
} 
+0

Questo ha funzionato per me, con piccole modifiche per il mio setup. '\t \t \t \t indicatore \t.addListener ('click', function() { \t \t \t \t \t infowindow.open (mappa, marcatore);. \t \t \t \t \t var iw_container = $ ("GM-style-IW") genitore(); . \t \t \t \t \t iw_container.stop() hide(); \t \t \t \t \t iw_container.fadeIn (1000); \t \t \t \t \t}); ' – atomicadam

0

L'effetto fadeOut può essere ottenuto aggiungendo classe e setTimeout. Lasciatemi spiegare.

Ad esempio:

$('.close-el') 
     .on('click', function(e) { 
      e.stopPropagation(); 
      $(infobox.div_).addClass('is-closing'); 
      setTimeout(function() { 
       infobox.close(); 
      }, 700); 
    }); 

quando si aggiunge classe CSS, e, dopo la fine della transizione css si chiude la finestra informazioni

e CSS (sass) (classe .infoBox è riservata)

.infoBox { 
    &.is-closing { 
     transition: transform 400ms, opacity 400ms; 

     transform: translate3d(0, 30px, 0); 
     opacity: 0; 
    } 
}