2010-07-03 9 views
5

Sto costruendo un'applicazione Web che richiede agli utenti di fornire la loro posizione (simile al modo in cui Facebook lo fa). Non sono sicuro sul modo migliore per implementarlo. Richiedo la possibilità di cercare tra i record di un'altra entità (chiamiamolo 'eventi') che hanno anche una posizione fisica collegata ad essa e abbinare gli utenti nella stessa posizione o abbastanza vicino. Ho solo bisogno di risoluzione per singole città/città.Best practice per la posizione fisica dell'utente (input, tipo di dati, visualizzazione e convalida)

Il modo in cui autorizzo l'utente a fornire la sua posizione (compresa la convalida e il modo in cui free-form consentirò questo input), il modo di memorizzare questo campo nel DB, ecc. Dipende ovviamente l'uno dall'altro. Il mio pensiero attuale è di consentire l'immissione in forma libera, archiviare come stringa di testo e abbinare suddividendo la stringa di posizione in una matrice (delimitata da virgole e caratteri del periodo), quindi confrontando l'array di posizione dell'utente con la matrice di posizione dell'evento.

Esiste un modo per rendere il problema più facile per me convalidando da qualche parte un elenco di posizioni fornite da un servizio Web? Come vengono gestiti questi problemi di solito?

Qualsiasi aiuto sarebbe molto apprezzato!

risposta

2

Penso che il tuo approccio possa essere accettabile a seconda della quantità di precisione richiesta.

Un approccio più accurato (e probabilmente più complesso) sarebbe quello di memorizzare effettivamente tutte le posizioni in coordinate. Puoi utilizzare un servizio web di geolocalizzazione (credo che Google ne fornisca uno, anche altri) per mappare i nomi delle località in coordinate. È anche possibile utilizzare la geolocalizzazione basata su IP per cercare di indovinare dove si trova l'utente in modo che non debbano necessariamente digitare il proprio indirizzo.

Ci sono formule (e probabilmente librerie) per calcolare le distanze tra le coordinate l'una rispetto all'altra, il che renderebbe facile visualizzare le cose entro un certo raggio dalle coordinate dell'utente e cose del genere.

Si potrebbe anche considerare l'utilizzo del nuovo HTML5 geolocation API che è supportato dai browser più recenti

+0

+1 per API di geolocalizzazione – Gordon

+0

Non sono sicuro di come l'API di geolocalizzazione può aiutarmi, se l'utente fornisce una posizione non valida che non convalida con l'API, quindi una misura di distanza tra l'utente e la posizione dell'evento (che sarà molto meglio specificato con un indirizzo stradale/"luogo" dell'API di Google location non è possibile. – ubermensch

+0

È possibile utilizzare l'API geo per rilevare la posizione dell'utente da dispositivi come l'iPhone senza che debbano immettere manualmente (o conoscere) la loro posizione esatta. Ovviamente può o non può esserti utile a seconda del tipo di applicazione su cui stai lavorando. –

0

Se avete bisogno di fare cose come "gli utenti di filtro in base alla località" allora è meglio (credo) per avere una lista predefinita delle posizioni che gli utenti scelgono (con un input di tipo suggerisci-come-tu, invece di un menu a discesa con migliaia di posizioni, ad esempio).

Si potrebbe iniziare con i dati da http://www.geonames.org/ (probabilmente sarebbe necessario fare un po 'di pulizia).

In alternativa, è possibile iniziare con un database vuoto e, dato che più utenti vengono inseriti dagli utenti, più località devono essere suggerite agli utenti successivi in ​​modo da non inserire varianti duplicate della stessa posizione.

Problemi correlati