python - obtener - API de GoogleMaps: dirección a coordenadas(latitud, longitud)
obtener latitud y longitud google maps javascript (3)
Esto me está volviendo loca. He borrado esta clave 1000 veces hasta el momento. Ayer funcionó como un encanto, hoy ya no más Aquí está el código python:
from googlemaps import GoogleMaps
gmaps = GoogleMaps("AIzaSyBIdSyB_td3PE-ur-ISjwFUtBf2O0Uo0Jo")
exactaddress ="1 Toronto Street Toronto"
lat, lng = gmaps.address_to_latlng(exactaddress)
print lat, lng
GoogleMapsError: Error 610: G_GEO_BAD_KEY
Ahora está devolviendo el error anterior sin razones obvias. No creo que haya alcanzado el límite de solicitud o la tasa máxima. Para estar seguro, incluso introduje retrasos (1 seg) ... aún recibo el mismo error
¿Alguien tiene alguna idea de cómo puedo resolver esto? Tener que trabajar con un módulo de python diferente está bien si puede indicar una alternativa a la que estoy usando actualmente.
Gracias c
PD: la clave es válida, es una clave de cliente y se habilitó automáticamente cuando habilité GoogleMAP API3 en la consola de la aplicación. Sin restricciones para dominios o direcciones IP
EDITAR: Así que esto es lo que terminé usando
def decodeAddressToCoordinates( address ):
urlParams = {
''address'': address,
''sensor'': ''false'',
}
url = ''http://maps.google.com/maps/api/geocode/json?'' + urllib.urlencode( urlParams )
response = urllib2.urlopen( url )
responseBody = response.read()
body = StringIO.StringIO( responseBody )
result = json.load( body )
if ''status'' not in result or result[''status''] != ''OK'':
return None
else:
return {
''lat'': result[''results''][0][''geometry''][''location''][''lat''],
''lng'': result[''results''][0][''geometry''][''location''][''lng'']
}
La biblioteca a la que Jason me señaló también es interesante, pero dado que mi código tenía la intención de arreglar algo (uso de una sola vez), no he probado su solución. Definitivamente lo consideraré si consigo escribir código de nuevo :-)
Aunque Google desaprobó las llamadas V2 con googlemaps (por lo que está viendo las llamadas rotas), recientemente anunciaron que otorgan a los desarrolladores una extensión de seis meses (hasta el 8 de septiembre de 2013) para pasar de la API V2 a la V3. . Consulte la Actualización sobre geocodificación API V2 para obtener más detalles.
Mientras tanto, revisa pygeocoder como una posible solución de Python V3.
Hice algunos códigos de golf y terminé con esta versión. Dependiendo de su necesidad, es posible que desee distinguir algunas otras condiciones de error.
import urllib, urllib2, json
def decode_address_to_coordinates(address):
params = {
''address'' : address,
''sensor'' : ''false'',
}
url = ''http://maps.google.com/maps/api/geocode/json?'' + urllib.urlencode(params)
response = urllib2.urlopen(url)
result = json.load(response)
try:
return result[''results''][0][''geometry''][''location'']
except:
return None
Desde septiembre de 2013, Google Maps API v2 ya no funciona . Aquí está el código que funciona para API v3 (basado en esta respuesta ):
import urllib
import simplejson
googleGeocodeUrl = ''http://maps.googleapis.com/maps/api/geocode/json?''
def get_coordinates(query, from_sensor=False):
query = query.encode(''utf-8'')
params = {
''address'': query,
''sensor'': "true" if from_sensor else "false"
}
url = googleGeocodeUrl + urllib.urlencode(params)
json_response = urllib.urlopen(url)
response = simplejson.loads(json_response.read())
if response[''results'']:
location = response[''results''][0][''geometry''][''location'']
latitude, longitude = location[''lat''], location[''lng'']
print query, latitude, longitude
else:
latitude, longitude = None, None
print query, "<no results>"
return latitude, longitude
Consulte la documentación oficial para obtener la lista completa de parámetros e información adicional.