Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS]problem z mapą google
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
dak977
Witam, mam problem z usuwaniem znaczników na mapie po zmianie danych w polu select. Najlepiej będzie jak przedstawię na początku kod:
  1. <div id="map_canvas" style="width: 700px; height: 400px; overflow: hidden"></div>
  2. <script type="text/javascript">
  3. var map;
  4. function initialize() {
  5. if (GBrowserIsCompatible()) {
  6.  
  7. map = new GMap2(document.getElementById("map_canvas"));
  8. map.setCenter(new GLatLng(37.97918, 23.71665), 13);
  9. map.addControl(new GOverviewMapControl());
  10. map.addControl(new GScaleControl());
  11. map.addControl(new GSmallZoomControl());
  12. map.enableScrollWheelZoom();
  13.  
  14. }
  15. function set(wybrany){
  16. //map.removeOverlay(gx);
  17.  
  18. switch(wybrany){
  19. case "Cała Polska":
  20. var gx = new GGeoXml("polska.kml");
  21. map.addOverlay(gx);
  22. break;
  23. case "Mazowieckie":
  24. var gx = new GGeoXml("mazowieckie.kml");
  25. map.addOverlay(gx);
  26. break;
  27. case "Podlaskie":
  28. var gx = new GGeoXml("podlaskie.kml");
  29. map.addOverlay(gx);
  30. break;
  31.  
  32. }
  33. }
  34. </script>
  35.  
  36. <select name="catid" id="catid" onChange="set(this.options[this.selectedIndex].value)">
  37. <?php
  38. $tablica = array("Cała Polska","Mazowieckie","Podlaskie");
  39. foreach ($tablica as $i){
  40.  
  41. echo '<option value="'.$i.'">'.$i.'</option>';
  42. }
  43. ?>
  44. </select>
  45.  

A więc wszystko działa dobrze, tylko nie usuwa mi znaczników po zmianie danych. Jak zastosuje map.removeOverlay(gx);przed switch to w ogóle mi nie wyświetla znaczników. Macie może jakieś sugestie, co mógłbym zrobić. Z góry dzięki
mls
Nie usunie, bo po pierwsze zmienna gx nie istnieje w linii w której próbujesz usunąć marker, a po drugie, w tym kodzie nigdy tam nie zaistnieje. var tworzy zmienną o zasięgu lokalnym od miejsca zdefiniowania. Jeśli chcesz aby kod zadziałał, utwórz zmienną gx na równi z map. Dodatkowo przydałoby się sprawdzanie, czy w momencie usuwania gx zawiera marker czy jest puste.
dak977
Wielkie dzięki, zadziałało..oto działający kod:
  1. <div id="map_canvas" style="width: 700px; height: 400px; overflow: hidden"></div>
  2. <script type="text/javascript">
  3. var map;
  4. var gx;
  5. function initialize() {
  6.  
  7. if (GBrowserIsCompatible()) {
  8.  
  9. map = new GMap2(document.getElementById("map_canvas"));
  10. map.setCenter(new GLatLng(37.97918, 23.71665), 13);
  11. map.addControl(new GOverviewMapControl());
  12. map.addControl(new GScaleControl());
  13. map.addControl(new GSmallZoomControl());
  14. map.enableScrollWheelZoom();
  15.  
  16. }
  17. function set(wybrany){
  18. if (gx!=null)map.removeOverlay(gx);
  19.  
  20. switch(wybrany){
  21. case "Cała Polska":
  22. gx = new GGeoXml("polska.kml");
  23. map.addOverlay(gx);
  24. break;
  25. case "Mazowieckie":
  26. gx = new GGeoXml("mazowieckie.kml");
  27. map.addOverlay(gx);
  28. break;
  29. case "Podlaskie":
  30. gx = new GGeoXml("podlaskie.kml");
  31. map.addOverlay(gx);
  32. break;
  33.  
  34. }
  35. }
  36.  
  37. </script>
  38. <select name="catid" id="catid" onChange="set(this.options[this.selectedIndex].value)">
  39. <?php
  40. $tablica = array("Cała Polska","Mazowieckie","Podlaskie");
  41. foreach ($tablica as $i){
  42. echo '<option value="'.$i.'">'.$i.'</option>';
  43.  
  44. }
  45.  
  46. ?>
  47.  
  48. </select>
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.