Potrzebuję podczas rejestracji użytkownika zweryfikować podane przez niego miasto (globalnie) oraz pobrać współrzędne tego miasta.
Czy możecie polecić jakiś gem lub plugin do takich zadań geolokacyjnych, aby pobrać współrzędne podanego miasta? Jak obliczyć odległość pomiędzy jednym miastem, a drugim bazując na współrzędnych?
Co do pierwszego pytania: najprościej Ci będzie użyć google maps (czyli JS, po stronie klienta – jak klient poda adres, to od razu JS w tle wypełni longitude i latitude). Jeśli nie chcesz, to będziesz potrzebował bazy kodów pocztowych, nie wiem skąd można wyciągnąć taką bazę dla Polski.
Możesz też użyć google maps API, jeśli wyliczenie odległości możesz mieć client-side (tzn. nie musisz np. wyszukiwać punktów w odległości X kilometrów od danego)
Jedyne rozwiązanie o jakim wiem które potrafi liczyć poprawne odległości pomiędzy punktami na sferze to PostGIS rozszerzenie do PostgreSQL. Pytanie tylko czy zależy Ci na takiej dokładności. MySQL ma niby podobne rozszerzenie wbudowane ale nie jest na tyle dobre abym mógł je polecić. PostGIS z kolei to “pain in the ass” jeśli chodzi o konfigurację.
PostGIS działa rewelacyjnie (także jeśli chodzi o wydajność), ale tak jak Hubert napisał – konfiguracja i pożenienie go z railsami boli.
Sphinx też ma jakiś geo-searching, ale nie sprawdzałem.
Tego wbudowanego w mongo nie polecam, bo chłopaki polecieli jakby to były współrzędne kartezjańskie (czyli z twierdzenia Pitagorasa), dzięki czemu uzyskali świetną wydajność (trik z geohashingiem) ale dokładność nie-do-przyjęcia
Ogólnie: da się, ale przygotuj się na niezły ride
(jeśli zamierzasz pójść w PostgreSQL/Postgis, to powiedz – zmuszę się żeby wreszcie napisać o tym notkę na bloga, w sensie 3b )