Jestem bardzo sfrustrowany i mam nadzieję, że ktoś tu może pomóc. Mam aplikację do map, na której znajduje się kilka znaczników na mapach z systemem InfoWindows, którego zawartość jest regularnie aktualizowana. Moim rozwiązaniem było umieszczenie elementów div, które znajdą się w infoWindow w DOM w ukrytym kontenerze, który może być aktualizowany przez mój kod aktualizatora w tle. Potem użyć pojedynczego infoWindow i po prostu ustawić zawartość do elementu DOM przy użyciu zapytania:Google Maps infowindow.setContent jako element DOM z jQuery wydaje się działać tylko raz?
google.maps.event.addListener(marker, 'click', function(){
infoWindow.setContent($(#"+id+"-window-content)[0]);
infoWindow.open(map, marker);
}
Rzecz działa świetnie ... raz. Wtedy nie otworzy się ponownie dla tego twórcy. Zauważyłem, że jeśli otworzę okno na jednym markerze (Marker A), a następnie go zamknę, a następnie otworzę na innym ekspresie (Marker B), a następnie powrócę do Markera A, pojawi się okno obok Markera A , ale z zawartością Markera B.
Dlaczego mój skrypt nie ustawi treści do elementu DOM po raz drugi ... To prawie tak, jakby użyć selektora jQuery do usunięcia elementu z DOM.
Cheers,
whiteatom
Witam ponownie,
okazuje mogę odpowiedziałeś na moje własne pytanie, kiedy starałem się to wyjaśnić tutaj.
Przekazanie elementu DOM do funkcji setContent() wydaje się faktycznie usunąć go z DOM i umieścić w oknie InfoWindow, więc następnym razem, gdy spróbuję go pobrać, już go nie ma. Moją poprawką było dodanie clone() do wywołania jQuery i wygląda na to, że działa teraz.
google.maps.event.addListener(marker, 'click', function(){
infoWindow.setContent($(#"+id+"-window-content).clone()[0]);
infoWindow.open(map, marker);
}
Czy ktoś może potwierdzić, że jest to zachowanie setContent, gdy element DOM jest przekazywany do niego? czy to najlepszy sposób, aby sobie z tym poradzić?
Cheers,
whiteatom
tak :) to jest dokładnie to, co widziałem. Klonuję teraz. Dzięki! – whiteatom
Cieszę się, że to naprawiłeś! Szczęśliwe mapowanie :) –