Necesito una lista de países, estados y ciudades basada en una colección de valores lat / long que tengo. Necesito almacenar esta información de manera que la jerarquía sea preservada y sin duplicados (por ejemplo, "EE. UU." Y "Estados Unidos" y "Estados Unidos de América" son el mismo país; solo quiero una instancia de este país en mi base de datos) .
¿Es posible hacer esto con la API de Google Map?
google-maps
geolocation
google-maps-api-3
geocoding
StackOverflowNewbie
fuente
fuente
Respuestas:
Lo que busca se llama codificación geográfica inversa . Google proporciona un servicio de codificación geográfica inversa del lado del servidor a través de la API de codificación geográfica de Google , que debería poder utilizar para su proyecto.
Así es como se vería una respuesta a la siguiente solicitud:
Respuesta:
También puede optar por recibir la respuesta en xml en lugar de json, simplemente sustituyendo json por xml en el URI de la solicitud:
Hasta donde yo sé, Google también devolverá el mismo nombre para los componentes de la dirección, especialmente para nombres de alto nivel como nombres de países y nombres de ciudades. No obstante, tenga en cuenta que, si bien los resultados son muy precisos para la mayoría de las aplicaciones, es posible que encuentre errores ortográficos ocasionales o resultados ambiguos.
fuente
sensor=false
hacer?Tienes una respuesta básica aquí: obtén el nombre de la ciudad usando la geolocalización
Pero para lo que estás buscando, te lo recomiendo de esta manera.
Solo si también necesita Administrative_area_level_1, para almacenar diferentes cosas para París, Texas, EE. UU. Y París, Ile-de-France, Francia y proporcionar una reserva manual:
-
Hay un problema en la forma de Michal, en que toma el primer resultado, no uno en particular. Utiliza resultados [0]. La forma que creo conveniente (acabo de modificar su código) es tomar SOLO el resultado cuyo tipo es "localidad", que siempre está presente, incluso en un eventual retroceso manual en caso de que el navegador no admita la geolocalización.
Su manera: los resultados obtenidos son diferentes de usar http://maps.googleapis.com/maps/api/geocode/json?address=bucharest&sensor=false que de usar http://maps.googleapis.com/maps/api/geocode /json?latlng=44.42514,26.10540&sensor=false (búsqueda por nombre / búsqueda por lat y lng)
De esta manera: los mismos resultados obtenidos.
fuente
Usé esta pregunta como punto de partida para mi propia solución. Pensé que era apropiado devolver mi código ya que es más pequeño que el de tabacitu
Dependencias:
Código:
fuente
Encontré el javascript de GeoCoder con algunos errores cuando lo incluí en mis archivos jsp.
También puedes probar esto:
fuente
$.get(url).success(function(data)
de$.get(url, function(data)
y está funcionando bienEscribí esta función que extrae lo que está buscando en función de lo
address_components
devuelto por la API de gmaps. Esta es la ciudad (por ejemplo).Cambiar
locality
aadministrative_area_level_1
para el estado, etc.En mi código js estoy usando así:
Regresará:
Waltham, MA
fuente
Solo prueba este código, este código funciona conmigo
fuente
He creado una pequeña función de mapeador:
Es una solución para Angular 4, pero creo que entenderás la idea.
Uso:
De esta forma, el
address
objeto será algo como esto:¡Espero eso ayude!
fuente
fuente
@ Szkíta Tuvo una gran solución al crear una función que obtiene las partes de la dirección en una matriz con nombre. Aquí hay una solución compilada para aquellos que desean usar JavaScript simple.
Función para convertir los resultados a la matriz nombrada:
Geocodifica los valores LAT / LNG:
fuente