J'ai besoin d'une liste de pays, états et villes basée sur une collection de valeurs lat / long que j'ai. J'ai besoin de stocker ces informations de manière à ce que la hiérarchie soit préservée et sans doublons (par exemple, "USA" et "United States" et "United States of America" sont le même pays; je ne veux qu'une seule instance de ce pays dans ma base de données) .
Est-ce possible de faire avec l'API Google Map?
google-maps
geolocation
google-maps-api-3
geocoding
StackOverflowNewbie
la source
la source
Réponses:
Ce que vous recherchez s'appelle le géocodage inversé . Google fournit un service de géocodage inversé côté serveur via l' API Google Geocoding , que vous devriez pouvoir utiliser pour votre projet.
Voici à quoi ressemblerait une réponse à la demande suivante:
Réponse:
Vous pouvez également choisir de recevoir la réponse en xml au lieu de json, en remplaçant simplement json par xml dans l'URI de la requête:
Pour autant que je sache, Google renverra également le même nom pour les composants d'adresse, en particulier pour les noms de haut niveau tels que les noms de pays et les noms de villes. Néanmoins, gardez à l'esprit que si les résultats sont très précis pour la plupart des applications, vous pouvez toujours trouver une faute d'orthographe occasionnelle ou un résultat ambigu.
la source
sensor=false
quoi?Vous avez une réponse simple ici: obtenir le nom de la ville en utilisant la géolocalisation
Mais pour ce que vous recherchez, je recommande cette façon.
Uniquement si vous avez également besoin de administrative_area_level_1, pour stocker différentes choses pour Paris, Texas, US et Paris, Ile-de-France, France et fournir une solution de secours manuelle:
-
Il y a un problème à la manière de Michal, en ce qu'il prend le premier résultat, pas un en particulier. Il utilise les résultats [0]. La façon dont je l'entends (je viens de modifier son code) est de prendre UNIQUEMENT le résultat dont le type est "localité", qui est toujours présent, même dans un éventuel repli manuel au cas où le navigateur ne prend pas en charge la géolocalisation.
Sa manière: les résultats récupérés sont différents de l'utilisation de http://maps.googleapis.com/maps/api/geocode/json?address=bucharest&sensor=false que de l'utilisation de http://maps.googleapis.com/maps/api/geocode /json?latlng=44.42514,26.10540&sensor=false (recherche par nom / recherche par lat & lng)
De cette façon: mêmes résultats récupérés.
la source
J'ai utilisé cette question comme point de départ pour ma propre solution. J'ai pensé qu'il était approprié de contribuer à mon code car il est plus petit que celui de tabacitu
Dépendances:
Code:
la source
J'ai trouvé le javascript GeoCoder un peu bogué lorsque je l'ai inclus dans mes fichiers jsp.
Vous pouvez également essayer ceci:
la source
$.get(url).success(function(data)
à$.get(url, function(data)
et il fonctionne bienJ'ai écrit cette fonction qui extrait ce que vous recherchez en fonction du
address_components
retour de l'API gmaps. C'est la ville (par exemple).Changement
locality
àadministrative_area_level_1
de l'État , etc.Dans mon code js, j'utilise comme ceci:
Reviendra:
Waltham, MA
la source
Essayez simplement ce code, ce code fonctionne avec moi
la source
J'ai créé une petite fonction de mappage:
C'est une solution pour Angular 4 mais je pense que vous aurez l'idée.
Usage:
De cette façon, l'
address
objet sera quelque chose comme ceci:J'espère que ça aide!
la source
la source
@ Szkíta Avait une excellente solution en créant une fonction qui récupère les parties d'adresse dans un tableau nommé. Voici une solution compilée pour ceux qui souhaitent utiliser du JavaScript brut.
Fonction pour convertir les résultats dans le tableau nommé:
Géocoder les valeurs LAT / LNG:
la source