Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: geolokalizacja HTML5 w input type text od razu po załadowaniu stronki
Forum PHP.pl > Forum > PHP
Sielly
Witajcie,
znowu pisze z prośbą o pomocy. wink.gif Prosty problem, ale moja uboga wiedza na temat js sprawia, że mam problem z jego rozwiązaniem. Otóż, chce, żeby w formularzu rejestracyjnym pojawiał się pewien input typu text, którego nie mógł by użytkownik zmienić i że jeśli użytkownik zezwoli na geolokalizacje, żeby jego miejscowość się tam pojawiła, a jeśli nie pole pozostawało puste.
Jeśli komuś się chce to napisać (podejrzewam, że to jest parę linijek) to będę wdzięczny, a jak nie to poproszę o link do jakiegoś kursu, wszędzie znalazłem tylko kursy na dodanie mapy, a nie wiem jak wyciągnąć nazwę i wstawić ją w inputa..
Pozdrawiam
viking
Tylko już na początek podpowiem ci że wykywanie pozycji może zwracać bzdury (np moja aktualna pozycja to Bydgoszcz chociaż nigdy w tym mieście nie byłem). Blokując możliwość zmiany raczej wkurzysz użytkownika.
_Borys_
Dodajesz do inputa disabled="disabled"
No ale po co blokować.
Sielly
zablokować umiem, chce zrobić żeby wartość sama się pojawiała i ewentualnie obok żeby pojawiał się przycisk "to nie jest moja miejscowość" i po jego naciśnięciu aby inpucik się odblokowywał, chce tylko zrobić automatyczne dodawanie, trochę by mi to pomogło później przy bazie, bo chce zrobić później statystyki ile osób jest skąd i jeśli jedna osoba jest z "Busko-Zdrój" a druga jest z "Busko Zdroj" to już mam w bazie dwie różnie miejscowości, jeśli robił by to HTML5 to nie było by problemów związanych z pisownią.
_Borys_
Dynamiczne blokowanie pól formularza
Sielly
dzięki borys, ale z tym akurat nie mam większego problemu, bardziej mi chodzi o pobranie nazwy miejscowości, bo tego to nie mam zielonego pojęcia jak zrobić. wink.gif
Pawel_W
google -> geolocation api

powinno Ci to zwrócić współrzędne, które z kolei za pomocą google maps api (geocoding dokładniej) możesz zamienić na nazwę miejscowości
_Borys_
Jak chcesz pobrać z formularza to dajesz inputowi name i po wysłaniu formularza masz w tablicy $_POST albo $_GET miejscowość i robisz z tym co chcesz.
Tak czy owak użytkownik wpisuje miejscowość i wysyła formularz. Ale lepiej aby wpisywał kod pocztowy bo miejscowości takich samych może być więcej.
Pawel_W
Cytat(_Borys_ @ 12.03.2013, 14:40:38 ) *
Jak chcesz pobrać z formularza to dajesz inputowi name i po wysłaniu formularza masz w tablicy $_POST albo $_GET miejscowość i robisz z tym co chcesz.
Tak czy owak użytkownik wpisuje miejscowość i wysyła formularz. Ale lepiej aby wpisywał kod pocztowy bo miejscowości takich samych może być więcej.

Ty chyba dalej nie rozumiesz o co jemu chodzi biggrin.gif @Sielly od początku pyta w jaki sposób załadować do pola lokację użytkownika...
Sielly
Tak jak wyżej - mówiąc najprościej jak mogę:
mam input
  1. <input type="text" name="miejscowosc" value="" id="Mi1" disabled="disabled">

i chce żeby w value pojawiała się nazwa miejscowości użytkownika. ale rozważam też opcję z kodem pocztowym, jednak odrobinę psuło by mi to estetykę na stronie (ktoś niekumaty może się zdziwić jak zobaczy przy rejestracji pytanie o kod pocztowy a nie o miejscowość).
Pawel_W
eh, skoro pomimo podanych przeze mnie wskazówek nie działa...

Kod
var gl;

function displayPosition(position) {
    var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng="+position.coords.latitude+","+position.coords.longitude+"&sensor=false";
    //pobierasz sobie to za pomocą ajaxa (możesz skorzystać chociażby z jQuery) i wyciągasz interesujące Cię dane - więcej info tutaj: [url="https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding"]https://developers.google.com/maps/document...everseGeocoding[/url]
}

function displayError(positionError) {
    alert("Nie udało się określić lokalizacji");
}

try {
    if (typeof navigator.geolocation === 'undefined'){
        gl = google.gears.factory.create('beta.geolocation');
    } else {
        gl = navigator.geolocation;
    }
} catch(e) {}

if (gl) {
    gl.getCurrentPosition(displayPosition, displayError);
} else {
    alert("Geolokacja nie jest wspierana przez Twoją przeglądarkę");
}
Sielly
Dzięki, poradziłem sobie!

-edit
w sumie to jeszcze nie do końca
  1. <!DOCTYPE html>
  2. <body onload="getLocation();">
  3. <input type="text" id="ide">
  4. var x=document.getElementById("ide");
  5. function getLocation()
  6. {
  7. if (navigator.geolocation)
  8. {
  9. navigator.geolocation.getCurrentPosition(showPosition);
  10. }
  11. else{x.value="";}
  12. }
  13. function showPosition(position)
  14. {
  15. x.value=position.coords.latitude +":" + position.coords.longitude;
  16. }
  17. </body>
  18. </html>

mam w inpucie koordy oddzielone przecinkami, jak z tego miejscowość zrobić?
Pawel_W
ehh, napisałem przecież... skorzystaj z reverse geocoding udostępnianego przez google, pisałem o tym w 2 postach...
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.