这让我发疯了。 到目前为止,我已经删除了1000次此密钥。 昨天它像魅力一样,今天不再了 这是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
现在返回上述错误没有明显的原因。 我认为我没有达到要求限制或最高费率 为了保持安全,我甚至引入了延迟(1秒)... stil得到相同的错误
有人知道如何解决这个问题吗? 如果你可以指出我目前使用的那个替代品,那么必须使用不同的python模块。
感谢 ç
PS:密钥有效,它是客户端密钥,当我在App控制台中启用GoogleMAP API3时,密钥自动启用。对域名或IP没有限制
编辑:所以我最终使用的是
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']
}
Jason指出的库也很有趣,但由于我的代码是为了解决某些问题(一次性使用),我没有尝试过他的解决方案。如果我再次编写代码,我肯定会考虑:-)
答案 0 :(得分:11)
虽然谷歌用googlemaps弃用了V2电话(这就是为什么你看到了破碎的电话),但他们最近宣布他们正在给开发者提供6个月的延期(截至2013年9月8日),以便从V2迁移到V3 API。有关详细信息,请参阅Update on Geocoding API V2。
在此期间,请查看pygeocoder作为可能的Python V3解决方案。
答案 1 :(得分:11)
自2013年9月起,Google Maps API v2 no longer works。以下是适用于API v3的代码(基于this answer):
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
有关参数和其他信息的完整列表,请参阅official documentation。
答案 2 :(得分:1)
有些代码打高尔夫球,最终得到了这个版本。根据您的需要,您可能希望区分更多错误条件。
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