API de GoogleMaps: dirección a las coordenadas (latitud, longitud)

Esto me está volviendo loco. He eliminado esta clave 1000 veces hasta ahora. Ayer funcionó a la perfección, hoy ya no. Aquí está el código de 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 permanecer en el lado seguro, incluso introduje retrasos (1 s) … aún obtengo el mismo error

¿Alguien tiene alguna idea de cómo puedo resolver esto? Tener que trabajar con un módulo Python diferente está bien si puedes 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. No hay restricciones para dominios o IPs.

EDIT: Así que aquí 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 como mi código tenía la intención de arreglar algo (un solo uso), no he probado su solución. Definitivamente consideraré que si vuelvo a escribir el código 🙂

Aunque Google desaprobó las llamadas V2 con googlemaps (por lo que está viendo las llamadas interrumpidas), recientemente anunciaron que les están dando a los desarrolladores una extensión de seis meses (hasta el 8 de septiembre de 2013) para pasar de la API V2 a V3. . Ver Actualización en Geocoding API V2 para más detalles.

Mientras tanto, vea pygeocoder como una posible solución de Python V3.

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, "" return latitude, longitude 

Consulte la documentación oficial para obtener la lista completa de parámetros e información adicional.

Hice algún código de golf y terminé con esta versión. Dependiendo de su necesidad, es posible que desee distinguir algunas condiciones de error más.

 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