2013-03-08 2 views
15

이것은 나를 미치게합니다. 지금까지이 키를 1000 번 삭제했습니다.Google지도 API - 주소 좌표 (위도, 경도)

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 초)을 도입했습니다 ... 같은 오류가 발생했습니다.

아무도 모르는 사람이 있습니까? 이거 해결해? 다른 파이썬 모듈로 작업하는 것이 현재 사용중인 대안을 나타낼 수 있다면 좋습니다.

감사 C

PS : 키가 유효, 그것은 클라이언트 키 내가이 앱 콘솔에서 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'] 
       } 

제이슨 내 코드가 뭔가를 해결하기 위해 의도 된 이후 나 또한 재미 있지만 가리키는 라이브러리 (하나를 사용하여 종료는 무엇입니까 시간 사용) 나는 그의 해결책을 시도하지 않았다.

+0

파이썬 구현이 유사하지만 v2 지오 코딩을 사용하는 사람들이 v2의 수명이 다하여 문제가 발생했는지 확실하지 않습니다. v3으로 전환하면 몇 가지 문제가 해결 된 것 같습니다. 파이썬 버전의 차이점이 있습니까? – Rafe

+0

2013 년 3 월 10 일부터 v2에 대한 지원이 중단되었으며 googlemaps 패키지는 다른 검색어 주소를 가진 v2를 사용하는 것 같습니다. 이론적으로 검색어 주소를 변경하면 충분합니다 (googlemaps 패키지). –

답변

11

구글이 V2 콜을 googlemaps로 사용 중지했는데 (이것이 부러진 콜을보고있는 이유입니다), 그들은 최근에 개발자들에게 V2에서 V3 API로 이전하려면 6 개월 연장 (2013 년 9 월 8 일까지) 자세한 내용은 Update on Geocoding API V2을 참조하십시오.

그동안 가능한 Python V3 솔루션으로 pygeocoder을 확인하십시오.

+0

감사합니다. 나는 그것을 시도 할 것이다. 내가 아무도 도움이 될 수 없다는 것을 알았을 때 나는 조금 더 껌을 봤다. 그리고 처음 질문에 붙여 넣은 함수가 꽤 잘 작동한다는 것을 알았다. – MiniMe

11

2013 년 9 월 이후 Google Maps API v2 no longer works.

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를 참조하십시오 여기 (this answer 기준) API v3에서 작동하는 코드입니다.

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