Najlepszy sposób na geolokacje w railsach

Cześć.

Mam projekt w którym potrzebuje dobrej geolokacji (aplikacja jest głównie kierowana na iphona). Potrzebuje narzędzia które pozwoliło by mi określić współrzędne geograficzne na podstawie ulicy (jeszcze lepiej jak by była możliwość określenia tego na podstawie iphonowego gpsu?). Może ktoś miał z tym doczynienia i wie czego najlepiej użyć?

Pozdro.

Użyj bezpośrednio api googlowego. Mozesz dodatkowo użyć biblioteki geokit jako gotowego reozwiązania ale nie jest to konieczne.

Ja bym użył geokita, przy okazji można bardzo prosto zrobić fallback dla API yahoo.

W jednym z moich serwisów używam geokita :slight_smile: Jest bardzo fajny, czasami rzuca tylko jakimś błędem encodera :smiley: (pewnie jak mi łącze zmula i jest time out)

Czy aplikacja działa w przeglądarce, czy też używa web service do połączenia się z Twoim backendem? Jeśli to pierwsze, to jest API JavaScript, dzięki któremu możesz pobrać pozycję via GPS. Geocoding – Geokit jest ok, ale możesz chcieć po prostu używać API Google, które jakoś mocno skomplikowane nie jest.

Dzięki za pomoc, wybrałem googlowe api + geokit (albo słabo szukałem albo poprostu nie da sie tu wydobyć obecnego położenia).
Lecz mam jeden problem.

@location = <<-JS navigator.geolocation.getCurrentPosition(function(position){ return position.coords.longitude; }); JS
(ten kod jest tylko po to, żeby pokazać o co mi mniej więcej chodzi)

chciałbym jakoś przekazać wynik z js do zmiennej w ruby. Jak to się powinno robić?

Dobra dowiedziałem się, że to co chciałem zrobić jest nie możliwe. Mam teraz inny problem.
Za pomocą js wyświetlam sobie w widoku położenie przez google maps. Czyli mam takie np takie spany:

.. <span id='lat'>50.12312</span> <span id='lat'>19.12312</span> ..
Jako, że railsy nic o tym nie wiedzą chciałbym jakos powiadomić je o tym i przekazać te wartości do jakiejś zmiennej. Jest na to jakiś łatwy sposób?
Dzięki za pomoc.

To co napisałeś nie ma sensu dlamnie ale:

html = "<span id='lat'>50.12312</span> <span id='lat'>19.12312</span>" lat1,lat2 = html.scan(/>(\d+.\d+)<\//).flatten

Uważasz, że istnieje na to jakiś inny sposób? Wiem, że to co chcę zrobić jest troche zagmatwane ale nie mam pojęcia jak przekazać wartość z wykonanego js do rubiego.

Może kod pokaże o co mi chodzi.

$(document).ready( // get the current position navigator.geolocation.getCurrentPosition( // if this was successful, get the latitude and longitude function(position){ var lat = position.coords.latitude; var lng = position.coords.longitude; $('#lat').html(lat); //tutaj wyświetlam uzyskane wartości w widoku, ja natomiast chciałbym je przekazać do zmiennej w rubym $('#lng').html(lng); }, // if there was an error function(error){ alert('ouch'); } ) )

No teraz pytanie wygląda bardziej sensownie. Poczytaj o XHR.