2017-05-05 1 views
0

Je rencontre un problème avec la classe Geocoder de l'API Javascript de Google Maps et les résultats qu'elle renvoie lors de l'utilisation de componentRestrictions.Résultats incorrects avec Google Maps API JS Classe Geocoder

En un mot, j'essaye de permettre à un utilisateur d'entrer une adresse et de trouver cette adresse dans une localité spécifique.

Je passe une chaîne comme adresse au littéral d'objet de géocodage.

Je puis restreindre la recherche à la seule ville "New York" en utilisant la propriété locality au sein de componentRestrictions.

donc mon code ressemble à ceci:

geocoder.geocode(
    {address: address, 
    componentRestrictions: { 
     locality: 'New York' 
    } 
    }, function(results, status) { 
    console.log(results); 
    } 
); 

Lors du passage d'une adresse spécifique, comme 'E 64th St & 5th Ave', il renvoie le résultat correct de l'emplacement du zoo de Central Park.

Cependant, si j'utilise quelque chose de plus obscur pour l'adresse, tel que 'East Village', il renvoie un résultat de l'emplacement de la mairie de New York.

Si j'enlève la propriété componentRestrictions, et que je lui donne la même adresse que 'East Village', elle renvoie l'emplacement correct pour East Village.

Ce qui rend cet étranger, c'est que j'utilise le code fourni dans un course through Udacity, enseigné par les développeurs de Google. Leur code peut être trouvé here on GitHub.

Lorsque je cours leur code exactement comme ils le fournissent, je rencontre le même problème que mon propre code.

Mais dans leur vidéo de cours, cela fonctionne correctement.

Il semble que certaines API ont peut-être changé depuis la création de ce cours, il est donc possible que j'utilise incorrectement le composant componentRestrictions.

Quelqu'un a-t-il rencontré un problème comme celui-ci et trouvé une solution? Ou est-ce que j'utilise le code incorrectement?

Merci pour votre aide!

Répondre

1

Google a publié la nouvelle version de geocoder en novembre 2016. La nouvelle version ne prend pas totalement en charge les composants d'adresse.

Jetez un oeil à ce document qui explique comment le filtrage composant fonctionne dans une nouvelle version:

https://developers.google.com/maps/documentation/geocoding/faq#trbl_component_filtering

Dans la nouvelle géocodage, le filtrage des composants est pleinement pris en charge pour les résultats adresse niveau. Il existe un soutien partiel pour le code de pays (par exemple, components = country: GB) et les restrictions du code postal pour la localité et les résultats de niveau supérieur.

+0

Merci @xomena, c'est définitivement le problème. Merci! –