これは私を夢中にさせています。これまでにこのキーを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秒)も導入しました...同じエラーが発生するまで
誰かが私がこれをどのように解決できるか考えていますか?私が現在使用しているモジュールの代替を示すことができれば、別のpythonモジュールで作業する必要があります。
ありがとうC
PS:キーは有効です。これはクライアントキーであり、アプリコンソールでGoogleMAPAPI3を有効にすると自動的に有効になりました。ドメインや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が私に指摘したライブラリも興味深いものですが、私のコードは何かを修正することを目的としていたため(1回限りの使用)、彼の解決策を試していません。私が再びコードを書くようになれば、私は間違いなくそれを考慮します:-)
Googleはgooglemapsを使用したV2呼び出しを非推奨にしましたが(これが壊れた呼び出しが表示される理由です)、最近、開発者にV2からV3 APIに移行するための6か月の延長(2013年9月8日まで)を提供すると発表しました。 。詳細については、 Geocoding API V2の更新 を参照してください。
それまでの間、可能な限りPython V3ソリューションとして pygeocoder をチェックしてください。
2013年9月以降、Google Maps API v2 機能しなくなりました 。 API v3で機能するコードは次のとおりです( この回答 に基づく):
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
パラメータの完全なリストと追加情報については、 公式ドキュメント を参照してください。
いくつかのコードゴルフをして、このバージョンで終わった。必要に応じて、さらにいくつかのエラー状態を区別したい場合があります。
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