python - Googlemaps 海拔 API 在传递参数时出错
问题描述
我正在尝试使用 pandas 从 excel 文件中获取海拔以读取文件和 jupyter 笔记本。我目前正试图弄清楚为什么我的代码会产生错误。
这是我的代码的样子:
import os
import googlemaps
gmaps = googlemaps.Client(key= "XXXXXXXXXXXXXXXXXXXXXX")
elevation = gmaps.elevation("40.88292", "-98.37342")
print(elevation)
它返回错误:
File "C:/Users/gabe/Desktop/a.py", line 6, in <module>
elevation = gmaps.elevation("40.88292", "-98.37342")
File "C:\Users\gabe\AppData\Local\Programs\Python\Python38\lib\site-packages\googlemaps\client.py", line 409, in wrapper
result = func(*args, **kwargs)
TypeError: elevation() takes 2 positional arguments but 3 were given
我尝试使用大量不同的坐标变体作为参数,但它总是返回此错误。
解决方案
文档说要传入一个位置列表,它可以是一个纬度坐标的列表/元组。
很有可能:
gmaps.elevation([("40.88292", "-98.37342")])
应该工作(根据@AMC评论)
您也可以按照API 文档自己构建 json 请求
from urllib.request import urlopen
import json
latlon = ["40.88292", "-98.37342"]
api_key = 'YOUR_API_KEY'
url = f'https://maps.googleapis.com/maps/api/elevation/json?locations={",".join(latlon)}&key={api_key}'
response = urlopen(url)
result = json.load(response)
结果
{'results': [{'elevation': 568.84423828125,
'location': {'lat': 40.88292, 'lng': -98.37342},
'resolution': 4.771975994110107}],
'status': 'OK'}
推荐阅读
- python-3.x - 为什么 npy 的大小比 csv 大?
- haskell - 尝试使用未加载的模块'main:Prelude'(.\Prelude.hs)时出现runhaskell错误
- express - NuxtJs serverMiddleware 导致生产错误
- c++ - 括号运算符在 C++ 中的作用是什么
- javascript - window.location.href 不提交表单
- generics - 我该如何处理这个“这不是被覆盖的子类型”错误
- javascript - selenium-webdriver 未使用 npm 安装在 ubuntu 中
- javascript - 如何使用 ajax 将带有图像文件的表单数据上传到 django 模型
- java - 为什么我在扩展类时会收到 ClassCastException?
- python - 无法从另一个脚本调用 py 脚本