首页 > 解决方案 > 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

我尝试使用大量不同的坐标变体作为参数,但它总是返回此错误。

标签: pythongoogle-mapsgoogle-apijupyter-notebook

解决方案


文档说要传入一个位置列表,它可以是一个纬度坐标的列表/元组。

很有可能:

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'}

推荐阅读