1 准备工作
首先去高德地图开放平台(https://lbs.amap.com/)上注册账号。
注册完成后,点击右边的控制台。
进入控制台后,选择管理Key。
进入管理Key 的界面后,选择添加Key,并在里面选择Web 服务。来创建后面需要使用的Key。
这是我创建的Key。
1.1 其他任务
需要其他任务的话可以在首页的开发支持里面查看具体的操作方法。
2 多个小任务
在开发支持里面选择Web 服务,再选择Web 服务API,里面有不同人物的API 文档。
总的来说,调用API 的方法就类似于用程序去访问网址,然后网站返回给我们一些可以使用的信息。比如在正地理编码中,我们访问这样一个网址,https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=XML&key=<用户的key>
,当然,因为我们对于API 有不同的需求,也就是需要设置不同的搜索条件。所以这个网址中,比如address=北京市朝阳区阜通东大街6号
,output=XML
,这些就是我们需要设置的条件。
下面提供几个方面入手的Python 示例。
2.1 (正)地理编码
(正)地理编码:将详细的结构化地址转换为高德经纬度坐标。且支持对地标性名胜景区、建筑物名称解析为高德经纬度坐标。
结构化地址举例:北京市朝阳区阜通东大街6号转换后经纬度:116.480881,39.989410
地标性建筑举例:天安门转换后经纬度:116.397499,39.908722
步骤:
- 申请Web 服务API 类型Key。
- 参考接口参数文档发起HTTP/HTTPS请求,第一步申请的 Key 需作为必填参数一同发送
- 接收请求返回的数据(JSON或XML格式),参考返回参数文档解析数据。如无特殊声明,接口的输入参数和输出数据编码全部统一为 UTF-8 编码方式。
根据文档可知,我们需要访问的网址是https://restapi.amap.com/v3/geocode/geo?parameters
在文档里可以看到需要我们设置的参数。
通过python 的requests 包可以设置参数并进行访问。
下面是我用到的几个参数。
KEY = '<申请的Key>'
CITY = '成都市'
ADDRESS = '龙湖源著11号'
OUTPUT = 'json'
将参数传入网址,访问后返回的数据以json 的形式储存。
url = 'http://restapi.amap.com/v3/geocode/geo?parameters'
params = {
'city': CITY,
'address': ADDRESS,
'key': KEY,
'output': OUTPUT}
j = json.loads(requests.get(url, params).content)
j
[output]:
{'status': '1',
'info': 'OK',
'infocode': '10000',
'count': '1',
'geocodes': [{'formatted_address': '四川省成都市成华区龙湖',
'country': '中国',
'province': '四川省',
'citycode': '028',
'city': '成都市',
'district': '成华区',
'township': [],
'neighborhood': {'name': [], 'type': []},
'building': {'name': [], 'type': []},
'adcode': '510108',
'street': [],
'number': [],
'location': '104.109009,30.674991',
'level': '兴趣点'}]}
返回的参数含义在官网中也可以看到。
2.2 逆地理编码
逆地理编码:将经纬度转换为详细结构化的地址,且返回附近周边的POI、AOI信息。
例如:116.480881,39.989410 转换地址描述后:北京市朝阳区阜通东大街6号
我用到的参数。
KEY = '<申请的Key>'
LOCATION = '121.513782,31.3003'
RADIUS = 3000
OUTPUT = 'json'
EX = 'all
POI_type = '商场|购物服务'
url = 'https://restapi.amap.com/v3/geocode/regeo'
# params = {
# "location": str(lat)+','+str(lng),
# "output": 'json',
# "key": KEY,
# }
params = {
"location": LOCATION,
"output": OUTPUT,
"key": KEY,
'radius': RADIUS,
'extensions': EX,
'poitype': '商场|购物服务'
}
response = requests.get(url, params = params)
# answer = json.loads(response.content)
# 这种方式也可以
answer = response.json()
其实我们也可以填好了网址之后,直接进行访问。不过传入参数的方法要灵活很多。
url = 'https://restapi.amap.com/v3/geocode/regeo?output=json&location=116.310003,39.991957&key=498d61ca9873202aed8cff9c380fd34f&radius=1000&extensions=all'
response = requests.get(url)
answer = response.json()
2.3 步行路径规划
步行路径规划 API 可以规划100KM以内的步行通勤方案,并且返回通勤方案的数据。
我用到的参数。
# 出发地和目的地
KEY = '<申请的Key>'
ORI = '116.481028,39.989643'
DES = '116.434446,39.90816'
url = 'https://restapi.amap.com/v3/direction/walking?parameters'
params = {
"origin": ORI,
"destination": DES,
"key": KEY,
'radius': 1000
}
response = requests.get(url, params = params)
answer = response.json()
# answer
参考文档:
https://lbs.amap.com/api/webservice/guide/api/georegeo