2010-07-09 9 views
5

Mi problema se refiere a la validación/normalización de la entrada de un usuario para la combinación de País y 'Ciudad' durante el registro. Idealmente, quiero una funcionalidad similar a la página de registro de OkCupid (http://www.okcupid.com/signup) donde se realiza esta pregunta. La pérdida de foco en el campo de entrada de la Ciudad valida la entrada de alguna manera, y es increíblemente bueno en eso. Probé una pequeña ciudad rural en la zona rural de Australia (pop. < 6000) y una ciudad al azar en Finlandia, y ambas fueron validadas de forma correcta y rápida.Normalizando/Validando la entrada de 'Ciudad' del usuario durante el registro

La normalización/validación es importante porque me gustaría normalizar el campo 'Ciudad' de una entidad de evento generada por el usuario para permitir la coincidencia con usuarios en la misma ubicación.

Esta validación tiene sentido tanto desde la perspectiva de la lógica de la aplicación (no quiero tratar con el atolladero 'NYC' = 'Nueva York' = 'Nueva York, Nueva York' = 'Nueva York'), y una perspectiva de usuario (otros usuarios entendiendo la ubicación de un usuario).

Estoy usando PHP y jQuery si eso hace la diferencia, pero cualquier solución en este punto es más prometedor que nada!

¡Gracias de antemano!

EDIT: ¡Resuelto! Yahoo proporciona la API de PlaceMaker: ¡análisis de cadena de ubicación de forma libre! 50.000 solicitudes por día límite:

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

Respuesta

2

Resuelto! Yahoo proporciona la API de PlaceMaker: ¡análisis de cadena de ubicación de forma libre! 50.000 solicitudes por día límite:

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

+0

Eso es bastante increíble. ¿Devuelve la latitud y la longitud también? –

+0

Sí, todo. La forma en que está unida significa que básicamente se telescopía con tanta o tan poca información como usted la proporcione, a la vez que proporciona una calificación de "calidad" en función de lo que desea saber. P.ej.si desea información de cruce de calles con una resolución que no tiene, proporciona algo cerca mientras reduce el valor de "calidad" que devuelve. – ubermensch

+0

Los servicios Placefinder y Placemaker se convirtieron en parte del servicio [BOSS] (https://developer.yahoo.com/boss/geo/) en 2012. Todavía están disponibles para el uso ** no comercial **, y [tasa limitado a 2000 consultas por día por tabla por ID de la aplicación] (https://developer.yahoo.com/boss/geo/docs/free_YQL.html#table_pf). – jonatan

1

Para fines de validación, el siguiente sitio tiene referencias a una amplia base de datos internacional ciudades (y gratis!).

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

La normalización es un problema mucho más difícil. Para eso, lo más probable es que necesite acceder a un producto propietario. Los mapas de Google pueden ser una opción.

+0

¿Alguna vez ha usado esta base de datos? El wiki de OpenStreetMap menciona algunas preocupaciones con los datos (http://wiki.openstreetmap.org/wiki/GEOnet_Names_Server). ¿Alguna idea? – ubermensch

+0

En general, es bueno y útil, pero tiene algunas de las peculiaridades mencionadas en el enlace que proporcionó. También tiende a funcionar mejor para las ciudades cuyos nombres nativos se deletrean con el conjunto de caracteres latinos. La anglicanización de los nombres de algunas ciudades asiáticas a veces puede ser problemática. – btreat

1

Una buena manera de validar un nombre de ciudad es para tratar el texto como una dirección, y lo convierten en coordenadas, un proceso llamado geocoding. La geocodificación también proporciona datos adicionales para cada ubicación identificada, que puede usar para asegurarse de que se ajusta a sus requisitos.

La API de Google admite la geocodificación, y es gratuita hasta 2500 requests per day.

Puede usar una biblioteca existente para interactuar con la API, como node-geocoder y geocoder-php. Las bibliotecas también admiten una larga lista de otras geocoding providers.

Cuestiones relacionadas