2010-07-03 13 views
5

Estoy creando una aplicación web que requiere que los usuarios proporcionen su ubicación (similar a la forma en que Facebook lo hace). No estoy seguro de la mejor manera de implementar esto. Requiero la capacidad de buscar a través de registros de otra entidad (llámalo 'eventos') que también tienen una ubicación física adjunta, y unir a los usuarios en la misma ubicación o lo suficientemente cerca. Solo requiero resolución a ciudades/pueblos individuales.Mejores prácticas para la ubicación física del usuario (entrada, tipo de datos, visualización y validación)

La forma en que le permito al usuario proporcionar su ubicación (incluida la validación y la forma libre que permitiría esta entrada), la forma de almacenar este campo en el DB, etc. obviamente dependen uno del otro. Mi pensamiento actual es permitir la entrada de forma libre, almacenar como una cadena de texto y unir dividiendo la cadena de ubicación en una matriz (delimitada por comas y caracteres de punto) y luego comparando la matriz de ubicación de usuario con la matriz de ubicación de evento.

¿Hay alguna manera en que pueda facilitarme el problema valiéndome de una lista de ubicaciones proporcionada por un servicio web? ¿Cómo se manejan generalmente estos problemas?

¡Cualquier ayuda sería muy apreciada!

Respuesta

2

Creo que su enfoque puede ser aceptable dependiendo de la precisión que requiera.

Un enfoque más preciso (y probablemente más complejo) sería almacenar realmente todas las ubicaciones en coordenadas. Puede utilizar un servicio web de geolocalización (creo que Google proporciona uno, otros también) para asignar nombres de ubicación en coordenadas. También puede usar la geolocalización basada en IP para tratar de adivinar dónde se encuentra el usuario para que no tenga que escribir su propia dirección.

Existen fórmulas (y probablemente bibliotecas) para calcular distancias entre coordenadas, lo que facilita la visualización de cosas dentro de un radio determinado a partir de las coordenadas del usuario y cosas por el estilo.

También podría considerar el uso de la nueva HTML5 geolocation API que es soportado por los navegadores más recientes

+0

+1 para Geolocalización API – Gordon

+0

No estoy seguro de cómo la API de geolocalización puede ayudarme: si el usuario proporciona una ubicación no válida que no valida con la API, una medida de distancia entre el usuario y la ubicación del evento (que será mucho mejor especificado con una dirección de calle/API de ubicación de Google 'lugar') no es posible. – ubermensch

+0

Puede usar la API geográfica para detectar la ubicación del usuario desde dispositivos como el iPhone sin que tengan que ingresar manualmente (o saber) su ubicación exacta. Por supuesto, puede o no serle útil según el tipo de aplicación en la que esté trabajando. –

0

Si necesita hacer cosas como "usuarios de filtro por localización", entonces es mejor (creo) para tener una lista predefinida de las ubicaciones de las que los usuarios eligen (con algunas sugerencias de tipo de entrada como tipo de entrada, en lugar de un menú desplegable con miles de ubicaciones, por ejemplo).

Puede comenzar con los datos de http://www.geonames.org/ (probablemente necesite hacer algunas limpiezas).

Como alternativa, podría comenzar con una base de datos en blanco y, a medida que los usuarios introduzcan más ubicaciones, más ubicaciones deberá sugerir a los siguientes usuarios para que no inserten variaciones duplicadas de la misma ubicación.

Cuestiones relacionadas