Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Mapy Google - Współrzędne
Forum PHP.pl > Forum > Przedszkole
slava
Cześć!
Jestem nowy na forum i jak większość bardziej potrzebuję pomocy niż będę pomocny.
Aczkolwiek.... Nigdy nic nie wiadomo.

Mam problem z mapą Google. Nie wiem jak przypisać wartość współrzędnych do "value" pola input. Poniżej jest kod mapki którą mam na stronie i działa idealnie:
tutaj przykład
W momencie kiedy kliknę na jakiś punkt na mapie pojawia się dymek z adresem i współrzędnymi. Wszystko "perfekt"!
Natomiast to co mnie boli to to, jak wyciągnąć wartości współrzędnych oraz adresu klikniętego punktu poza JS w sekcji head i przypisać później do "value" pola input.
Może istnieje jakaś tablica zmiennych wygenerowanych podczas wczytywania strony lub funkcja odwołująca się do tych zmiennych. Proszę o pomoc.


  1. <script type="text/javascript">
  2. var mapa; // obiekt globalny
  3. var geokoder = new GClientGeocoder();
  4.  
  5. function mapaStart()
  6. {
  7. if(GBrowserIsCompatible())
  8. {
  9. mapa = new GMap2(document.getElementById("mapa"));
  10. mapa.setCenter(new GLatLng(52.732529,15.236930),15);
  11. mapa.setUIToDefault(); // ustawia interfejs jak w Google Maps
  12.  
  13. GEvent.addListener(mapa,'click',function(obiekt,punkt)
  14. {
  15. if(!obiekt && punkt)
  16. {
  17. geokoder.getLocations(punkt,function(odpowiedz)
  18. {
  19. if(!odpowiedz || odpowiedz.Status.code != 200)
  20. {
  21. alert('Nie udało się ustalić adresu!');
  22. }
  23. else
  24. {
  25. var adres = odpowiedz.Placemark[0].address;
  26. var wspolrzedne = new GLatLng(odpowiedz.Placemark[0].Point.coordinates[1],odpowiedz.Placemark[0].Point.coordinates[0]);
  27.  
  28. var tekst = '<h3 class="dymek">Szczegóły klikniętego punktu</h3>';
  29. tekst += '<p class="dymek">'+wspolrzedne+'</p>';
  30. tekst += '<p class="dymek"><strong>adres</strong>: '+adres+'</p>'
  31. mapa.openInfoWindowHtml(wspolrzedne,tekst);
  32. }
  33. });
  34. }
  35. });
  36. }
  37. }
  38.  
  39.  
  40. function dodajMarker(lat,lon,opcje)
  41. {
  42. // obiekt mapa jest obiektem globalnym!
  43. mapa.addOverlay(new GMarker(new GLatLng(lat,lon),opcje));
  44. }
  45. </script>
  46.  
  47. </head>
  48.  
  49. <body onload="mapaStart()" onunload="GUnload()">
  50.  
  51.  
  52. <div id="mapa" style="width: 700px; height: 300px; border: 1px solid black; background: gray;">
  53. <!-- tu będzie mapa -->
  54. </div>
  55.  
  56. <p>Zaznacz na mapie swoją pozycję a następnie wyślij</p>
  57.  
  58. <!-- ten formularz wyśle dane do pozycja.php na której wydrukuje współrzędne i adres zaznaczonego punktu -->
  59.  
  60. <form name="formularz" action="pozycja.php" method="post">
  61.  
  62. <input type="hidden" name="pozycja" value="???">
  63. <input type="hidden" name="adres" value="???">
  64. <input type="submit" value="Wyślij">
  65. </form>
  66. </body>
  67. </html>
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
thek
W zdarzeniu click dla mapy sobie zdefiniuj, że ma owe współrzędne do konkretnych inputów/inputa wpisywać. Oczywiście najprościej zrobić to nadając inputom określone id. Czyli nieco rozbuduj swoją funkcję dodajMarker() o coś w stylu:
[JAVASCRIPT] pobierz, plaintext
  1. document.getElementById('lat').value = lat;
  2. document.getElementById('lon').value = lon;
[JAVASCRIPT] pobierz, plaintext
oczywiście nadając owym inputom właściwe id

EDIT: Byłbym zapomniał. To działa tylko gdy dodajesz marker... Musisz jeszcze zaimplementować obsługę zmiany współrzędnych gdy marker przesuwasz. Jeśli się nie mylę - zdarzenie dragend czy jakoś tak wink.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.