我正在从终端调用一个函数,该终端连接到Google Maps API以返回位置的坐标。
但是,我遇到此错误
sock.connect((self.host, self.port))
TimeoutError: [Errno 60] Operation timed out
过程如下:
>>>> python
>>>> from geocode import getGeocodeLocation
>>>> getGeocodeLocation("New York")
错误:
sock.connect((self.host, self.port))
TimeoutError: [Errno 60] Operation timed out
我正在使用的代码如下geocode.py-我认为这没问题,因为它以前运行良好。
import httplib2
import json
def getGeocodeLocation(inputString):
# Use Google Maps to convert a location into Latitute/Longitute coordinates
google_api_key = "my_api_key"
locationString = inputString.replace(" ", "+")
url = ('https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s'% (locationString, google_api_key))
h = httplib2.Http()
result = json.loads(h.request(url,'GET')[1])
latitude = result['results'][0]['geometry']['location']['lat']
longitude = result['results'][0]['geometry']['location']['lng']
return (latitude,longitude)
任何想法可能有什么问题吗?
答案 0 :(得分:1)
在RStudio Cloud上运行您的确切代码(使用我自己的密钥)时,我得到(40.7127753, -74.0059728)
作为输出。因此,这可能是与API密钥有关,与环境有关或与网络有关的问题。
要缩小问题范围,我建议您在同一平台上尝试一下。这些是我设置的方式:
geocode.py
import httplib2
import json
def getGeocodeLocation(inputString):
# Use Google Maps to convert a location into Latitute/Longitute coordinates
google_api_key = "MY_API_KEY"
locationString = inputString.replace(" ", "+")
url = ('https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s'% (locationString, google_api_key))
h = httplib2.Http()
result = json.loads(h.request(url,'GET')[1])
latitude = result['results'][0]['geometry']['location']['lat']
longitude = result['results'][0]['geometry']['location']['lng']
return (latitude,longitude)
main.py
from geocode import getGeocodeLocation
getGeocodeLocation("New York")
还要确保您的API密钥有效,并且您在项目中启用了计费和地理编码API。请参阅Google的get started guide。
希望这对您有帮助!