Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Checkboxy w google maps
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
szlipek
Mam checkboxy w moim google maps i odklikając na jeden z checkboxow znikają z mapy różne markery i mam te checkboxy podzielone na 2 kategorie jedne to rodzaj nośnika a drugie to otoczenie. I niby wszystko fajnie bo każde checkboxy działają. Ale jest mały problem. Mianowicie gdy odznaczam np banner i szkoła to znika marker który miał to i to czyli był bannerem a w otoczeniu miał szkołe ale gdy zaznaczam jeszcze raz checkbox ze szkoła to się pojawia pomimo że banner jest odznaczony

  1. function sprawdz(kategoria,otoczenie) {
  2. DomReady.ready(function() {
  3. if(document.getElementById("kat1").checked){
  4. if(document.getElementById("otocz1").checked){
  5. ukryjPokazKategorie(kategoria,true);ukryjPokazOtoczenie(otoczenie,true);}
  6. else{ukryjPokazKategorie(kategoria,true);ukryjPokazOtoczenie(otoczenie,false);}}
  7. else{if(document.getElementById("otocz1").checked)
  8. {ukryjPokazKategorie(kategoria,false);ukryjPokazOtoczenie(otoczenie,true);}
  9. else{ukryjPokazKategorie(kategoria,false);ukryjPokazOtoczenie(otoczenie,false)}}
  10. });
  11. }
  12.  
  13.  
  14. function ukryjPokazKategorie(kategoria,pokaz)
  15. {
  16. // kategoria oznacza id kategorii której widzialność trzeba zmienić
  17. // jeśli pokaz = false, to znaczy że mamy ukryć, w przeciwnym wypadku pokazać
  18.  
  19. // dla każdego z markerów
  20. for(var i=0; i<markery.length; i++)
  21. {
  22. // jeśli poszukiwana kategoria jest kategorią markera
  23. if(markery[i].kategoria==kategoria)
  24. {
  25. // to go ukrywamy lub pokazujemy, w zależności od argumetu pokaz
  26. if(pokaz==true)
  27. markery[i].show();
  28. else
  29. markery[i].hide();
  30. odswiezSidebar();
  31. }
  32. }
  33. }
  34.  
  35.  
  36. function ukryjPokazOtoczenie(otoczenie,pokaz)
  37. {
  38. // kategoria oznacza id kategorii której widzialność trzeba zmienić
  39. // jeśli pokaz = false, to znaczy że mamy ukryć, w przeciwnym wypadku pokazać
  40.  
  41. // dla każdego z markerów
  42. for(var i=0; i<markery.length; i++)
  43. {
  44. // jeśli poszukiwana kategoria jest kategorią markera
  45. if(markery[i].otoczenie==otoczenie)
  46. {
  47. // to go ukrywamy lub pokazujemy, w zależności od argumetu pokaz
  48. if(pokaz==true)
  49. markery[i].show();
  50. else
  51. markery[i].hide();
  52. odswiezSidebar();
  53. }
  54. }
  55. }
  56.  

oraz html
  1. <input checked="checked" id="kat1" type="checkbox" onclick="sprawdz('kat1','LED')" /> LED
  2. <input checked="checked" id="otocz1" type="checkbox" onclick="sprawdz('otocz1','szkoła')" /> szkoły

Trochę to przerobiłem ale teraz mam taki problem że chowają się tylko otoczenia bo otoczenie jest w funkcji sprawdz w argumentach na 2 miejscu jak zmienie na katergorie w drugim miejscu to kategorie się chowają a otoczenie nie. Co mam zrobić konsola nic nie pokazuje żadnego błędu nie wiem o co chodzi

  1. function sprawdzaj(kategoria,otoczenie)
  2. {
  3. if(document.getElementById("kat1").checked && document.getElementById("otocz1").checked)
  4. {
  5. ukryjPokazKategorie(kategoria,true);ukryjPokazOtoczenie(otoczenie,true);
  6. }
  7. else if (document.getElementById("kat1").checked==true && document.getElementById("otocz1").checked==false)
  8. {
  9. ukryjPokazKategorie(kategoria,true);ukryjPokazOtoczenie(otoczenie,false);
  10. }
  11. else if (document.getElementById("kat1").checked==false && document.getElementById("otocz1").checked)
  12. {
  13. ukryjPokazKategorie(kategoria,false);ukryjPokazOtoczenie(otoczenie,true);
  14. }
  15. else
  16. {
  17. ukryjPokazKategorie(kategoria,false);ukryjPokazOtoczenie(otoczenie,false);
  18. }
  19. }
  20. function ukryjPokazKategorie(kategoria,pokaz)
  21. {
  22. // kategoria oznacza id kategorii której widzialność trzeba zmienić
  23. // jeśli pokaz = false, to znaczy że mamy ukryć, w przeciwnym wypadku pokazać
  24.  
  25. // dla każdego z markerów
  26. for(var i=0; i<markery.length; i++)
  27. {
  28. // jeśli poszukiwana kategoria jest kategorią markera
  29. if(markery[i].kategoria==kategoria)
  30. {
  31. // to go ukrywamy lub pokazujemy, w zależności od argumetu pokaz
  32. if(pokaz==true)
  33. markery[i].show();
  34. else
  35. markery[i].hide();
  36. odswiezSidebar();
  37. }
  38. }
  39. }
  40. function ukryjPokazOtoczenie(otoczenie,pokaz)
  41. {
  42. // kategoria oznacza id kategorii której widzialność trzeba zmienić
  43. // jeśli pokaz = false, to znaczy że mamy ukryć, w przeciwnym wypadku pokazać
  44.  
  45. // dla każdego z markerów
  46. for(var i=0; i<markery.length; i++)
  47. {
  48. // jeśli poszukiwana kategoria jest kategorią markera
  49. if(markery[i].otoczenie==otoczenie)
  50. {
  51. // to go ukrywamy lub pokazujemy, w zależności od argumetu pokaz
  52. if(pokaz==true)
  53. markery[i].show();
  54. else
  55. markery[i].hide();
  56. odswiezSidebar();
  57. }
  58. }
  59. }

Zrobiłem coś takiego ale i tak nie działa tak jak należy. Znowu jak odkliknę wszystko to jest ok ale jak już zaznaczę spowrotę LED to pokazują się wszystkie LED nawet te ze szkołą mimo że szkoła jest odznaczona

Nikt nie ma żadnego pomysłu co może być tu nie tak?
thek
Pomyśl o części wspólnej. Musisz wiedzieć jakie kategorie są włączone i na tej podstawie sprawdzać także. Jeśli są włączone określone kategorie to włączone są te markery, gdzie choć jedna z ich kategorii jest włączona. Jeśli jakąś kategorię wyłączasz, to usuwasz z mapy tylko te markery, których żadna z kategorii nie jest włączona. Od sposobu zapisu kategorii markera zależy jak problem zrealizujesz.
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.