Google Maps infowindow.setContent comme un élément du DOM avec jQuery semble ne fonctionne qu'une fois?
Je suis très frustré et je suis en espérant que quelqu'un ici peut aider. J'ai une app de cartes où il y a plusieurs marqueurs sur les cartes avec infoWindows dont le contenu des mises à jour régulièrement. Ma solution a été de placer les divs qui va entrer dans la bulle informative dans les DOM caché dans un récipient qui peut être mis à jour par mon programme de mise à jour du code en arrière-plan. Puis-je utiliser un seul infoWindow et juste définir le contenu de l'élément DOM à l'aide de la requête:
google.maps.event.addListener(marker, 'click', function(){
infoWindow.setContent($(#"+id+"-window-content)[0]);
infoWindow.open(map, marker);
}
La chose fonctionne très bien... une fois. Alors il sera impossible de l'ouvrir de nouveau pour que maker. J'ai remarqué que si j'ouvre la fenêtre sur un marqueur (Marqueur), et puis fermez-le, puis l'ouvrir sur un autre fabricant (Marqueur B), et ensuite revenir à la marque, la fenêtre va apparaître à côté de la borne A, mais avec le Marqueur B du contenu.
Pourquoi ne pas en faire mon script définir le contenu de l'élément DOM une deuxième fois... C'est presque comme à l'aide du sélecteur jQuery est la suppression de l'élément du DOM.
Acclamations,
whiteatom
Bonjour à nouveau,
S'avère que j'ai peut-être répondu à ma propre question quand j'ai essayé de l'expliquer ici.
En passant d'un élément du DOM de la setContent() la fonction semble effectivement retirer du DOM et de la mettre dans la bulle informative, donc la prochaine fois j'essaie de l'attraper, il n'est plus là. Ma solution était d'ajouter un clone() de jQuery appeler et il semble fonctionner maintenant.
google.maps.event.addListener(marker, 'click', function(){
infoWindow.setContent($(#"+id+"-window-content).clone()[0]);
infoWindow.open(map, marker);
}
Quelqu'un peut confirmer c'est le comportement de la setContent lorsqu'un élément du DOM est passé? est-ce la meilleure façon de gérer cela?
Acclamations,
whiteatom
OriginalL'auteur whiteatom | 2012-03-14
Vous devez vous connecter pour publier un commentaire.
Lorsque vous modifiez un élément parent dans les DOM, l'élément est déplacé, pas copié.
Donc, je suppose que cette ligne...
De supprimer l'élément "#id-fenêtre-contenu" à partir de son emplacement initial.
Lorsque l'infoWindow est fermé, l'élément DOM en elle est rejetée.
Ainsi, lorsque vous cliquez une deuxième fois un marqueur, l'élément n'existe plus.
Essayer de cloner l'élément ou la livraison d'une chaîne HTML pour la infoWindow.
Espère que cette aide
Je suis content que vous vous êtes fixé! Heureux de cartographie 🙂
OriginalL'auteur Mike Gleason jr Couturier
Il en fait plus compliqué parce que j'ai eu onglets (avec des Outils de jQuery) dans le infoWindows et un clone (même avec copie en profondeur des événements et des données - clone(true, true)) n'a pas l'air de vouloir les porter... les languettes étaient morts dans l'infoWindow.
Donc.. je suis le mouvement de la div que j'ai été à l'origine, puis revenir en arrière avant que je ajouter le nouveau infoWindow contenu:
Je pense que cela a aussi l'avantage de permettre à mon script de mise à jour pour mettre à jour les n ° "+id+"-la fenêtre-le contenu de la div et il sera même mise à jour de l'infoWindow tout 🙂
Merci pour votre aide...
Wow merci, je n'ai pas s'attendre à ce que
getContent()
l'appel après l'infoWindow.close()
serait de travailler. Je m'attendais à les choses se dissipa les DOM après close(). Mais apparemment, ça fonctionne!Oui.. l'infoWindow tient son contenu jusqu'à ce que vous les détruire ou de définir de nouveaux contenus pensé que l'une avec l'essai et l'erreur.
OriginalL'auteur whiteatom