2010-07-09 25 views
5

Mon problème concerne la validation/normalisation de l'entrée d'un utilisateur pour la combinaison de Country et de 'Ville' lors de l'enregistrement. Idéalement, je veux une fonctionnalité similaire à la page d'inscription OkCupid (http://www.okcupid.com/signup) où cette question est posée. La perte de focus sur le champ de saisie City valide l'entrée d'une manière ou d'une autre, et il est incroyablement bon. J'ai essayé une petite ville de campagne en Australie rurale () et une ville au hasard en Finlande, et les deux ont été validés correctement et rapidement. Normalisation/Validation est important car je voudrais normaliser le champ 'Ville' d'une entité d'événement générée par l'utilisateur pour permettre la correspondance avec les utilisateurs au même endroit. Cette validation est logique à la fois du point de vue de la logique applicative (je ne veux pas traiter le bourbier 'NYC' = 'New York' = 'New York, New York' = 'New York'), et une perspective utilisateur (les autres utilisateurs comprenant la localisation d'un utilisateur). J'utilise PHP et jQuery si cela fait une différence, mais toute solution à ce stade est plus prometteur que rien!Normalisation/Validation de l'entrée 'Ville' de l'utilisateur lors de l'enregistrement

Merci d'avance!

EDIT: Résolu! Yahoo fournit l'API PlaceMaker - l'analyse syntaxique des chaînes de localisation de forme libre! 50.000 demandes par jour: limite de

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

Répondre

2

Résolu! Yahoo fournit l'API PlaceMaker - l'analyse syntaxique des chaînes de localisation de forme libre! 50.000 demandes par jour: limite de

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

+0

C'est vraiment génial. Renvoie-t-il également la latitude et la longitude? –

+0

Oui, tout. La façon dont il est mis en place signifie qu'il télescope essentiellement à autant ou aussi peu d'informations que vous lui donnez, tout en fournissant une note de «qualité» en fonction de ce que vous voulez savoir. Par exemple.Si vous voulez des informations transversales à une résolution qu'il n'a pas, il fournit quelque chose à proximité tout en abaissant la valeur de «qualité» qu'il renvoie. – ubermensch

+0

Les services Placefinder et Placemaker ont été intégrés au [service BOSS] (https://developer.yahoo.com/boss/geo/) en 2012. Ils sont toujours disponibles pour ** utilisation non commerciale **, et [taux limité à 2000 requêtes par jour par table par APP ID] (https://developer.yahoo.com/boss/geo/docs/free_YQL.html#table_pf). – jonatan

1

Pour des fins de validation, le site suivant contient des références à une base de données très complète des villes internationales (et gratuit!).

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

est normalisant un problème beaucoup plus difficile. Pour cela, vous aurez probablement besoin de puiser dans un produit exclusif. Google Maps peut être une option.

+0

Avez-vous déjà utilisé cette base de données? Le wiki OpenStreetMap mentionne quelques soucis avec les données (http://wiki.openstreetmap.org/wiki/GEOnet_Names_Server). Des pensées? – ubermensch

+0

Dans l'ensemble, il est bon et utile, mais il a certaines des bizarreries mentionnées sur le lien que vous avez fourni. Il a également tendance à mieux fonctionner pour les villes dont les noms natifs sont épelés avec le jeu de caractères latin. L'anglicisation des noms de certaines villes asiatiques peut parfois être problématique. – btreat

1

Une bonne façon de valider un nom de la ville est de traiter le texte comme une adresse, et le convertir en coordonnées, un processus appelé geocoding. Le géocodage fournit également des données supplémentaires pour chaque emplacement identifié, que vous pouvez utiliser pour vous assurer qu'il est conforme à vos exigences.

L'API Google prend en charge le géocodage et est gratuite jusqu'à 2500 requests per day. Vous pouvez utiliser une bibliothèque existante pour interagir avec l'API, par exemple node-geocoder et geocoder-php. Les bibliothèques prennent également en charge une longue liste d'autres geocoding providers.