Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript] Iframe i czasowe odświerzanie
Forum PHP.pl > Forum > Przedszkole
northwest
Witam serdecznie,
Próbuje zrobić na swojej stronce listę firm opartych na google maps.
Co około 2 sekundy strona z mapkami google ma się przeładowywać i nakładać nowe punktu naniesione przez użytkowników mojej strony.
Widziałem takie rozwiązanie na pewnej stronie i tam wszystko ładnie się w locie przeładowywało (niewidocznie dla użytkownika).

Zrobiłem coś takiego:
http://panoramaofert.pl/maps.php

(maps.php i maps2.php)

Zrobiłem iframe który zczytuje plik maps2.php.
Jak widać wygląda to nie najlepiej - widać przeładowania... :///

Wiecie może jak to zrobić żeby nie były aż tak widoczne??


Z góry dzięki za pomoc,
Pozdrawiam Northwest
m87
Wydaje mi się, że źle do tego podchodzisz. Nie pamiętam teraz dokładnie dokumentacji tego apletu google maps, ale tam chyba można dodawać dynamicznie te znaczniki (punkty) przez JS. Moje rozwiązanie wyglądało by tak, że baza punktów leży gdzieś sobie w MySQLu, a dane te są wyciągane przez AJAXa i dynamicznie dodawane.

Ogólnie odświeżanie co 2s to słaby pomysł... Przy kilkudziesięciu użytkownikach naraz serwer Ci strasznie zamuli...
northwest
a masz może jakiś przykład tego??smile.gif

a jaki Ty byś dał czas odświeżania?? smile.gif
m87
Nie mam niestety przykładu, może jak będę miał chwilę wolnego to spróbuję coś takiego napisać na szybko tongue.gif

Czas odświeżania - myślę, że nie częściej niż co 30s. Wszystko zależy od ilości użytkowników i mocy serwera winksmiley.jpg Chciałeś zrobić co 2s. Załóżmy, że w tym samym momencie będzie 20 użytkowników oglądających mapę. To nam daje 10 zapytań do serwera na sekundę. Nie znam się co prawda dobrze na specyfice serwerów www, ale wydaje mi się, że to sporo. Postaw na swoim komputerze Apache'a i odświeżaj stronę 10x na sekundę winksmiley.jpg

Ogólnie całość można jeszcze trochę zoptymalizować zapisując czas ostatniej zmiany bazy punktów i każdego punktu z osobna. Wtedy nie wysyłamy przy każdym odświeżeniu pełnej listy punktów tylko ewentualnie punkty, które zostały dodane od ostatniego odświeżenia, a jeśli czas ostatniej zmiany bazy jest starszy niż aktualny to w ogóle nic nie przesyłamy. Trochę to zakręcone, ale dość logiczne tongue.gif
northwest
Noo jak byś mi przygotował taki przykład to byłbym baaaaardzo wdzięczny smile.gif)
W sumie chyba masz rację z tymi zapytaniami... może się zamulić serwer...

z tymi czasami co mówisz to troszkę zamotane i chyba nie będzie potrzebne;)

ps. da się to zrobić tak że nie będzie widać tego efektu "przeładowania"??smile.gif
m87
Cytat
ps. da się to zrobić tak że nie będzie widać tego efektu "przeładowania"??smile.gif


Naturalnie, wtedy mapa jako taka nie będzie w ogóle przeładowywana, będą jedynie do niej dodawane nowe punkty.
northwest
ooo to super smile.gif)
Jakbyś mi przygotował taki przykład to byłbym Ci naprawdę baaaardzo wdzięczny smile.gif))
m87
Ok, coś tam napisałem tongue.gif
Więc tak:

http://shells.pl/marszall/google_maps/index.php - Główna strona z mapą, czyli to co ma się odświeżać.

http://shells.pl/marszall/google_maps/maps.js - Skrypt odpowiedzialny za to całe odświeżanie i mapę, jak widać w funkcji loadPointData() dane ładowane są z pliku points.php.

http://shells.pl/marszall/google_maps/points.php - Skrypt php, który wyciąga z bazy mysql informacje o punktach (długość, szerokość i opis) i wypisuje je w odpowiedni sposób (JSON) - chyba dość zrozumiałe.

http://shells.pl/marszall/google_maps/dodaj.php - Tutaj dodajemy punkty, w pole szukaj możemy wpisać miasto, ulicę, cokolwiek i kliknąć szukaj - jeśli google znajdzie lokalizację to współrzędne zostaną wpisane do pól poniżej. Klikamy dodaj i php dodaje te dane do bazy mysql. Oczywiście możemy wpisać dane ręcznie.

Jeśli chcesz zobaczyć jak to działa to otwórz index.php i dodaj.php w osobnych okienkach przeglądarki, dodaj jakiś punkt i po kilku sekundach powinien się pojawić na mapie w index.php smile.gif

Nie chciało mi się bawić w sprawdzanie dat dodania itd, więc jak tylko baza się zmieni to wszystkie punkty z mapy są usuwane i dodawane na nowo. Trochę to widać, ale można by to poprawić tak jak mówiłem - wysyłać tylko listę punktów które zostały dodane/zmienione. Chociaż z tym byłoby trochę zabawy tongue.gif
northwest
super, dzięki WIELKIE smile.gif)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.