Google Geocoder retourne le mauvais pays, en ignorant la région de l'indice
Je suis en utilisant Google Geocoder de trouver lat gnl coordonnées pour une adresse donnée.
var geocoder = new google.maps.Geocoder();
geocoder.geocode(
{
'address': address,
'region': 'uk'
}, function(results, status) {
if(status == google.maps.GeocoderStatus.OK) {
lat: results[0].geometry.location.lat(),
lng: results[0].geometry.location.lng()
});
address
variable est prise à partir d'un champ de saisie.
Je veux emplacements de recherche uniquement au royaume-UNI. Je pensais que le fait de spécifier 'region': 'uk'
devrait être suffisant, mais il ne l'est pas. Quand je tape dans "Boston" c'est de trouver de Boston en NOUS et je voulais l'une au royaume-UNI.
Comment restreindre Geocoder de lieux de retour seulement d'un pays ou peut-être à partir d'un certain lat gnl de gamme?
Grâce
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR: Cette réponse peut ne pas être la meilleure approche plus. Voir les commentaires ci-dessous, la réponse pour plus de détails.
En plus de ce Pekka déjà suggéré, vous pouvez concaténer
', UK'
à votreaddress
, comme dans l'exemple suivant:Capture d'écran:
Je trouve que c'est très fiable. En revanche, l'exemple suivant montre que ni les
region
paramètre, ni labounds
paramètre, sont en effet dans ce cas:Le code suivant va obtenir le premier correspondant à une adresse au royaume-UNI sans avoir besoin de modifier l'adresse.
k
être utilisé n'importe où et letypes.length
n'est pas liée à lashort name
valeur.Utilisation componentRestrictions attribut:
La bonne façon de le faire est de leur fournir des componentRestrictions
Par exemple:
Selon la docs, le paramètre de région semble fixer un biais seulement (au lieu de un véritable limite à la région). Je pense que lorsque l'API ne trouvez pas l'adresse exacte dans le royaume-UNI lieu, il permettra d'élargir la recherche n'importe quelle région vous entrez.
J'ai réussi assez bien dans le passé, tout en précisant le code du pays dans le adresse (en plus de la région).
Je n'ai pas eu beaucoup d'expérience avec les mêmes noms de lieux dans les différents pays encore, cependant. Encore, il est vaut le coup. Essayez
il doit retourner pas d'adresse (au Lieu de le NOUS de Boston), et
Doit retourner le Boston au royaume-UNI parce que, en réalité, a une Rue Principale.
Mise à jour:
Vous pouvez définir un
bounds
paramètre. Voir iciVous devez calculer un royaume-UNI-taille du rectangle pour que, bien sûr.
78 Austin Street, Boston, UK
juste pour la curiosité, mais elle est revenue quelques aléatoire "Austin Avenue" près de Manchester. Lien Google Maps: maps.google.com/...accuracy
valeur.)region
paramètre devrait être de retour au royaume-UNI-ville, mais apparemment il n'est pas fiable encore. Le seul moyen fiable je suis conscient de l'instant est de concaténer ', royaume-UNI à votre adresse. Si les utilisateurs d'ajouter le code de pays et que vous ajoutez le royaume-UNI partie deux fois, il ne fera pas de mal non plus (même si vous pourriez vouloir vérifier pour que).accuracy
vous obtenez pour cette adresse? Le fait d'invalider notre approche (ajout de,UK
à l'adresse)?GeocoderLocationType
de la classe: code.google.com/apis/maps/documentation/v3/.... Les deux de retourRANGE_INTERPOLATED
. En utilisant simplementBoston, UK
retourneAPPROXIMATE
. Comme vous pouvez le voir, ce ne peut pas être invoqué. Je me serais attendu àBoston, UK
de retourGEOMETRIC_CENTER
, par exemple, et78 Austin Street
de retourAPPROXIMATE
au moins... ou peut-êtreWILD GUESS :)
.bounds
dans les options de demande (qui serait un moyen de calcul d'un pays rectangle) et la vérification de la résultat pour le pays?bounds
à SW:49.00, -13.00
, NE:60.00, 3.00
, et laregion
àuk
, mais le Geocoder renvoie toujours le Boston dans le Massachusetts. Le seul moyen fiable autour de ce que je suis conscient de est de demander à la Geocoder pourBoston, UK
.bounds
paramètre ne fonctionne pas comme prévu. Vérifiez le nouvel exemple dans ma mise à jour de réponse. Cela peut être à cause de Google Maps v3 est encore une version Labs, ou tout simplement agir d'un indice, comme vous l'avez suggéré initialement. Cependant la documentation de la version 3 ne semblent pas indiquer que c'est un indice:bounds is the LatLngBounds within which to search
etregion is the country code top-level domain within which to search
.J'ai trouvé des problèmes avec la mise ",royaume-UNI", la définition de la région royaume-UNI et la définition de limites. Cependant, en faisant TOUS les TROIS semble résoudre le problème pour moi. Voici un extrait:-
J'ai essayé avec les éléments suivants:
Et son travail pour moi pour la région (pays états-unis).
J'ai toujours trouvé que c'était assez facile à filtrer à travers, car les résultats peuvent varier et la région ne semble pas fonctionner.
Je préfère un approche hybride.
Si cela ne donne pas assez de résultats, la recherche de façon plus générale (et de ré-introduire des biais si nécessaire)
Je trouve que pour un grand nombre de requêtes ambiguës, les états-unis a toujours la préséance dans Google, même si vous essayez de lui dire où regarder. Vous pouvez regarder la réponse et peut-être l'ignorer si la sortie country=fr?
Qui est la principale raison que j'ai arrêté de l'utiliser Google Geocoder il y a un moment et a commencé la construction de mon propre il y a deux ans.
https://geocode.xyz/Boston,%20UK renverra toujours le royaume-UNI emplacement. Vous pouvez faire certain en ajoutant région=royaume-UNI: https://geocode.xyz/Boston,%20UK?région=royaume-UNI
J'ai Créé des Frontières Tout Autour royaume-Uni et de vérifier si mon Lat et de Gnl sont dans la Gamme. Pour k 3 adresses que j'ai autour de 10 jusqu'à 20 adresses en NOUS. Je viens de les Ignorer(je peux le faire dans mon cas) j'utilise la lat et de gnl pour la création de plusieurs marqueurs statique, carte avec zoom automatique. Je vais partager ma Solution peut-être aider quelqu'un. Aussi je suis Heureux d'entendre les différentes Solutions pour mon cas.
Pour le royaume-uni, vous devez utiliser GO pour la région. Royaume-UNI n'est pas le code ISO du pays!
J'ai dû filtrer les résultats à un pays aujourd'hui moi-même. J'ai découvert que le code de pays à deux caractères dans componentRestrictions:pays: ne fonctionne pas. Mais le nom du pays n'.
C'est le full_name dans le address_components à partir d'un résultat.