我打算在Python中使用“googlemaps”软件包,但是api_id有问题。
以下代码:
from googlemaps import GoogleMaps
gmaps = GoogleMaps(api_key = 'AIzaSyDjuqAztMNv_TgGdQMdpjMo68x9eNbEl-E')
address = 'Constitution Ave NW & 10th St NW, Washington, DC'
lat, lng = gmaps.address_to_latlng(address)
print lat, lng
错误消息如下:
C:\Users\Linfeng\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.1.0.1371.win-x86_64\lib\urllib2.pyc in http_error_default(self, req, fp, code, msg, hdrs)
525 class HTTPDefaultErrorHandler(BaseHandler):
526 def http_error_default(self, req, fp, code, msg, hdrs):
--> 527 raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
528
529 class HTTPRedirectHandler(BaseHandler):
HTTPError: HTTP Error 403: Forbidden
我已经在谷歌上打开了与地图有关的所有服务。
该套餐是否过时,因此不受Google支持?
感谢您的帮助!
一切顺利,
-Linfeng
答案 0 :(得分:3)
我遇到了和你一样的错误,并没有找到令人满意的答案,所以我按照这个网站上的方法改变了我的脚本来创建我需要的脚本(http://www.portailsig.org/content/python-geocodage-geolocalisation - 但是用法语写的)
import urllib, json, csv
def geocode(addr):
url = "http://maps.googleapis.com/maps/api/geocode/json?address=%s&sensor=false" % (urllib.quote(addr.replace(' ', '+')))
data = urllib.urlopen(url).read()
info = json.loads(data).get("results")[0].get("geometry").get("location")
#A little ugly I concede, but I am open to all advices :) '''
return info
#Open the List file of adresses to look for corresponding lat and lng.
f = open('list', 'rb')
addresses = f.readlines()
f.close()
#Loop to feed the func with adresses and output the lat & lng.
for a in addresses:
r = geocode(a)
print "%s %s" % (r['lat'], r['lng'])
它对我来说很好,除了索引错误,有时我必须解决。
答案 1 :(得分:1)
您可以尝试在python中使用geoPy包。示例代码如下:
from geopy.geocoders import Nominatim
geolocator = Nominatim()
location = geolocator.geocode("Ratainda")
print((location.latitude, location.longitude))
答案 2 :(得分:0)
Api v2于2013年9月13日被关闭。您的问题在14日被问到 - 所以这是一个线索:)。
我设法做的只是修改googlemaps.py
中的网址,现在它可用于路由。
我将_DIRECTIONS_QUERY_URL(googlemaps.py第165行)更改为:
_DIRECTIONS_QUERY_URL = 'http://maps.googleapis.com/maps/api/directions/output?'
它工作正常。
此外,我尝试修改第164行:_GEOCODE_QUERY_URL = 'http://maps.googleapis.com/maps/api/geocode/output?'
按照建议here,但是有一些错误,并且a)我不需要它b)它已经被pygeocoder所覆盖,这比googlemaps更高级。吡啶