2010-07-09 25 views
5

Mój problem dotyczy sprawdzania/normalizowania danych wejściowych użytkownika dla kombinacji kraju i "Miasta" podczas rejestracji. Idealnie, chcę funkcjonalność podobną do strony rejestracji OkCupid (http://www.okcupid.com/signup), w której to pytanie jest zadawane. Utrata ostrości w polu wejściowym City sprawdza w jakiś sposób dane wejściowe i jest w tym niesamowicie dobra. Próbowałem małego miasteczka na wsi w Australii (pop < 6000) i losowego miasta w Finlandii, a oba zostały poprawnie i szybko zatwierdzone.Normalizowanie/sprawdzanie poprawności wpisu użytkownika "Miasto" podczas rejestracji

Normalizowanie/sprawdzanie poprawności jest ważne, ponieważ chciałbym znormalizować pole "Miasto" jednostki zdarzeń wygenerowanej przez użytkownika, aby umożliwić dopasowanie do użytkowników w tej samej lokalizacji.

Ta walidacja ma sens zarówno z perspektywy logiki aplikacji (nie chcę zajmować się "Nowym Jorkiem" = "Nowym Jorkiem" = "Nowym Jorkiem, Nowym Jorkiem" = "Nowym Jorkiem"). perspektywa użytkownika (inni użytkownicy rozumieją lokalizację użytkownika).

Używam PHP i jQuery, jeśli to robi różnicę, ale każde rozwiązanie w tym momencie jest bardziej obiecujące niż nic!

Z góry dziękuję!

EDYCJA: Rozwiązane! Yahoo zapewnia interfejs API PlaceMaker - parsowanie ciągów znaków w dowolnej formie! 50000 żądań na granicy dzień:

http://developer.yahoo.com/geo/placemaker/

Odpowiedz

2

Rozwiązany! Yahoo zapewnia interfejs API PlaceMaker - parsowanie ciągów znaków w dowolnej formie! 50000 żądań na granicy dzień:

http://developer.yahoo.com/geo/placemaker/

+0

To całkiem niesamowite. Czy zwraca również szerokość i długość geograficzną? –

+0

Tak, wszystko. Sposób, w jaki jest on złożony, oznacza, że ​​w zasadzie to teleskopy do tak dużej lub małej ilości informacji, jakie dajesz, zapewniając jednocześnie ocenę "jakości" w zależności od tego, co chcesz wiedzieć. Na przykład.jeśli chcesz uzyskać informacje o przejściach ulicznych w rozdzielczości, której nie ma, zapewnia coś w pobliżu, jednocześnie obniżając zwracaną wartość "jakości". – ubermensch

+0

Usługi Placefinder i Placemaker stały się częścią usługi [BOSS] (https://developer.yahoo.com/boss/geo/) w 2012 roku. Są one nadal dostępne do ** niekomercyjnego użytku ** i [stawka jest ograniczona do 2000 zapytań dziennie na tabelę na identyfikator aplikacji] (https://developer.yahoo.com/boss/geo/docs/free_YQL.html#table_pf). – jonatan

1

Dla celów walidacji dodaje strona zawiera odnośniki do bardzo wszechstronny międzynarodowy miast bazy danych (i za darmo!).

http://earth-info.nga.mil/gns/html/

Normalizacja jest znacznie trudniejszy problem. W tym celu najprawdopodobniej będziesz musiał użyć zastrzeżonego produktu. Mapy Google mogą być jedną z opcji.

+0

Czy kiedykolwiek korzystałeś z tej bazy danych? W wiki OpenStreetMap wspomniano o pewnych problemach z danymi (http://wiki.openstreetmap.org/wiki/GEOnet_Names_Server). jakieś pomysły? – ubermensch

+0

Ogólnie rzecz biorąc, jest to dobre i użyteczne, ale ma pewne dziwactwa wymienione pod podanym linkiem. Ma również tendencję do lepszej pracy w miastach, których natywne nazwy są zapisane za pomocą zestawu znaków łacińskich. Anglizyzacja nazw niektórych miast azjatyckich może czasami być problematyczna. – btreat

1

Dobrym sposobem, aby potwierdzić nazwę miasta jest traktowanie tekstu jako adresu i przekonwertować go do współrzędnych, proces zwany geocoding. Geokodowanie zapewnia również dodatkowe dane dla każdej zidentyfikowanej lokalizacji, które możesz wykorzystać, aby upewnić się, że jest ona zgodna z Twoimi wymaganiami.

Google API obsługuje geokodowanie i jest bezpłatny do 2500 requests per day.

Możesz użyć istniejącej biblioteki do interakcji z interfejsem API, takiej jak node-geocoder i geocoder-php. Biblioteki obsługują również długą listę innych geocoding providers.

Powiązane problemy