7
votes

Le service de géocodage Google rend la réponse pour une fausse adresse

J'utilise le service de géocodage Google pour valider qu'un nom de ville (plus région et pays) qui a été inscrit dans notre système existe et pour obtenir le lat / long.

Cependant, je constate que cela semble "deviner" si vous faites une faute de frappe et retourne une réponse même si vous avez commis une erreur.

Par exemple, une demande de "Beverton, de l'Ontario, Canada" renvoie la Lat / Long for Beaverton, sans indication que vous avez fourni le mauvais nom de ville.

J'utilise le type de réponse CSV et j'obtiens le code de réponse 200.

Puis-je empêcher le service de le faire ou, mieux encore, pour savoir s'il a?

Edit: Pour clarifier ... Google corrige l'entrée (lorsque je m'attendrais à simplement échouer) et je dois savoir s'il l'a fait.


4 commentaires

Je pense que le type de réponse CSV est le moins détaillé de toutes vos options. Voir ma réponse ci-dessous pour une alternative possible.


Je ne pouvais pas trouver un "Beverton, Ontario" avec un service de cartographie. Êtes-vous sûr que c'est correct? geonames.nrcan.gc.ca/search/search_f.php


Juste, il n'y a pas de "Beverton" ... la ville est "Beaverton" (notez l'A)


OK, je comprends. Vous avez le résultat correct, mais vous voulez juste savoir si le Geocoder a décidé que vous avez eu une faute de frappe.


3 Réponses :


0
votes

est-il en réponse avec un "Code de réussite de 200"? Il y a une chance qu'il puisse vous donner un code de statut différent.

Voici les différents codes d'état Google Retours: http: // code.google.com/apis/maps/documentation/reference.html#ggeostaUstustausCode


1 commentaires

Oui, je reçois 200. Question mise à jour.



0
votes

Remarque: voir le Réponse de @chris B ci-dessus. Comme le souligne Chris, cela peut être impossible à mettre en œuvre.

Devez-vous utiliser le type de réponse CSV? Sinon, les autres types de réponse tels que KML fournissent suffisamment de détails pour déterminer l'emplacement que les coordonnées se rapportent. Vous pouvez vérifier votre entrée contre l'élément de localité de la réponse. P>

<kml xmlns="http://earth.google.com/kml/2.0">
  <Response>
    <name>1600 amphitheatre mountain view ca</name>
    <Status>
      <code>200</code>
      <request>geocode</request>
    </Status>
    <Placemark>
      <address> 
        1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA
      </address>
      <AddressDetails Accuracy="8">
        <Country>
          <CountryNameCode>US</CountryNameCode>
          <AdministrativeArea>
            <AdministrativeAreaName>CA</AdministrativeAreaName>
           <SubAdministrativeArea>
             <SubAdministrativeAreaName>Santa Clara</SubAdministrativeAreaName>
             <Locality>
               <LocalityName>Mountain View</LocalityName>
               <Thoroughfare>
                 <ThoroughfareName>1600 Amphitheatre Pkwy</ThoroughfareName>
               </Thoroughfare>
               <PostalCode>
                 <PostalCodeNumber>94043</PostalCodeNumber>
               </PostalCode>
             </Locality>
           </SubAdministrativeArea>
         </AdministrativeArea>
       </Country>
     </AddressDetails>
     <Point>
       <coordinates>-122.083739,37.423021,0</coordinates>
     </Point>
   </Placemark>
  </Response>
</kml>


1 commentaires

De plus, vous pouvez utiliser un type de réponse JSON ou XML pour obtenir les mêmes données.



4
votes

Il n'y a aucun moyen pour le Geocoder de vous faire savoir si cela pense que vous avez eu une faute de frappe. Je suis d'accord avec la réponse de Saul, que votre meilleur pari est de vérifier votre requête contre la réponse.

Je voulais juste souligner que vous devrez vérifier plusieurs éléments de votre contribution contre plusieurs valeurs de réponse, afin de trouver les éléments qui devraient correspondre. Dans ce cas, "Beaverton" a été retrouvé à l'intérieur de "DépendantLocalityName". xxx

update:

Ceci peut être impossible réellement mettre en œuvre. Si votre contribution est "Beverton, Ontario, Canada", comment savez-vous lequel de ces trois mots à vérifier? Deux d'entre eux vont correspondre bien. Et si elles sont entrées dans un ordre différent?


2 commentaires

Cela s'avère être vrai. Personnellement, je pense que cet étrange pour l'API de retourner une réponse pour une demande totalement différente de celle que vous avez fournie, sans vous le dire!


Cela me semble que le service de géocodage de Google a une place à l'amélioration. Peut-être pourraient-ils en quelque sorte indiquer qu'une réponse «floue» a été fournie dans les données de localisation.