Cela me rend fou. J'ai supprimé cette clé 1 000 fois jusqu'à présent. Hier, cela fonctionnait à merveille, aujourd'hui, plus Voici le code 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
Il renvoie maintenant l'erreur ci-dessus sans raison évidente. Je ne pense pas avoir atteint la limite de demandes ni le débit maximal Pour rester du côté de la sécurité, j'ai même introduit des retards (1sec) ... toujours avoir la même erreur
Quelqu'un a-t-il une idée de la façon dont je peux résoudre ce problème? Il est correct de travailler avec un module python différent si vous pouvez indiquer une alternative à celle que j'utilise actuellement.
merci C
PS: la clé est valide, il s’agit d’une clé cliente et elle a été activée automatiquement lorsque j’ai activé GoogleMAP API3 dans la console de l’application. Aucune restriction pour les domaines ou les IP
EDIT: Voici donc ce que j'ai fini par utiliser
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 bibliothèque que Jason m'a indiquée est également intéressante, mais comme mon code était destiné à corriger quelque chose (utilisation ponctuelle), je n'ai pas essayé sa solution. Je vais certainement considérer que si je peux réécrire du code :-)
Bien que Google déprécie les appels V2 avec googlemaps (c'est pourquoi vous voyez les appels interrompus), ils ont récemment annoncé qu'ils accordaient aux développeurs une extension de six mois (jusqu'au 8 septembre 2013) pour passer de l'API V2 à V3. . Voir Mise à jour de l'API de géocodage V2 pour plus de détails.
En attendant, vérifiez pygeocoder en tant que solution Python V3 possible.
Depuis septembre 2013, Google Maps API v2 ne fonctionne plus . Voici le code fonctionnant pour API v3 (basé sur cette réponse ):
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
Voir documentation officielle pour la liste complète des paramètres et des informations supplémentaires.
Est-ce que certains codes de golf et fini avec cette version. En fonction de vos besoins, vous voudrez peut-être distinguer quelques conditions d'erreur supplémentaires.
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