2010-07-09 12 views
5

Il mio problema riguarda la convalida/normalizzazione dell'input dell'utente per la combinazione di Paese e 'Città' durante la registrazione. Idealmente, voglio funzionalità simili alla pagina di registrazione di OkCupid (http://www.okcupid.com/signup) in cui viene posta questa domanda. La perdita di concentrazione sul campo di input City convalida in qualche modo l'input, ed è incredibilmente buono. Ho provato una cittadina di campagna nell'Australia rurale (pop < 6000) e una città casuale in Finlandia, ed entrambi sono stati convalidati correttamente e rapidamente.Normalizzazione/convalida dell'input dell'utente 'City' durante la registrazione

Normalizzare/Convalidare è importante perché vorrei normalizzare il campo "Città" di un'entità evento generata dall'utente per consentire la corrispondenza con gli utenti nella stessa posizione.

Questa convalida ha senso sia dal punto di vista della logica applicativa (non voglio occuparmi di "NYC" = "New York City" = "New York, New York" = "New York") e una prospettiva utente (altri utenti che comprendono la posizione di un utente).

Sto usando PHP e jQuery se questo fa la differenza, ma qualsiasi soluzione a questo punto è più promettente di niente!

Grazie in anticipo!

MODIFICA: risolto! Yahoo fornisce l'API di PlaceMaker - analisi delle stringhe di localizzazione in formato libero! 50.000 richieste al giorno limite:

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

risposta

2

Risolto! Yahoo fornisce l'API di PlaceMaker - analisi delle stringhe di localizzazione in formato libero! 50.000 richieste al giorno limite:

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

+0

È davvero fantastico. Ritorna anche latitudine e longitudine? –

+0

Sì, tutto. Il modo in cui viene messo insieme significa che in pratica si limita a teletrasportare le informazioni che gli vengono fornite, fornendo al contempo una valutazione di "qualità" a seconda di ciò che si desidera sapere. Per esempio.se si vogliono informazioni incrociate a una risoluzione che non ha, fornisce qualcosa nelle vicinanze riducendo al contempo il valore di 'qualità' che restituisce. – ubermensch

+0

I servizi Placefinder e Placemaker sono diventati parte del [servizio BOSS] (https://developer.yahoo.com/boss/geo/) nel 2012. Sono ancora disponibili per l'utilizzo ** non commerciale ** e [tariffa limitato a 2000 query al giorno per tabella per ID APP] (https://developer.yahoo.com/boss/geo/docs/free_YQL.html#table_pf). – jonatan

1

Per scopi di convalida, il seguente sito ha riferimenti a un molto completo città banca dati internazionale (e gratuito!).

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

normalizzazione è un problema molto più difficile. Per questo, molto probabilmente dovresti attingere a un prodotto proprietario. Le mappe di Google potrebbero essere un'opzione.

+0

Hai mai usato questo database? Il wiki di OpenStreetMap menziona alcune preoccupazioni con i dati (http://wiki.openstreetmap.org/wiki/GEOnet_Names_Server). qualche idea? – ubermensch

+0

Nel complesso è buono e utile, ma ha alcuni dei capricci menzionati nel link che hai fornito. Inoltre, tende a funzionare meglio per le città i cui nomi nativi sono scritti con il set di caratteri latini. L'anglicizzazione dei nomi di alcune città asiatiche può a volte essere problematica. – btreat

1

Un buon modo per convalidare il nome della città è quello di trattare il testo come un indirizzo, e convertirlo in coordinate, un processo chiamato geocoding. Geocoding fornisce inoltre dati aggiuntivi per ogni posizione identificata, che è possibile utilizzare per assicurarsi che sia conforme alle proprie esigenze.

L'API di Google supporta la geocodifica ed è gratuita fino a 2500 requests per day.

È possibile utilizzare una libreria esistente per l'interazione con l'API, ad esempio node-geocoder e geocoder-php. Le librerie supportano anche una lunga lista di altre geocoding providers.

Problemi correlati