高德地图开发指南的一些调用api文档在这个网址
https://lbs.amap.com/api/webservice/guide/api/newpoisearch
周边搜索 API 服务地址(get请求)
https://restapi.amap.com/v5/place/around?parameters
地理编码 API 服务地址(get请求)
htmlhttps://restapi.amap.com/v3/geocode/geo?parameters
步行路径规划API URL(get请求)
https://restapi.amap.com/v3/direction/walking?parameters
骑行路径规划API URL(get请求)
https://restapi.amap.com/v4/direction/bicycling?parameters
代码如下
import requests
import json
def current_location(key, address):
# 获取当前位置的经纬度
info = requests.get("https://restapi.amap.com/v3/geocode/geo?parameters",
params={"key": "3fbf8b85af364be7acbf51b22a81b04e",
"address": address})
# 使用get方法调用api,同时传入key和address参数(见文档)
dict = json.loads(info.text)
# json.loads()是用来读取字符串的,即可以把文件打开,用readline()读取一行,然后json.loads()一行
# json.load()也可用来读取文件的,即将文件打开然后就可以直接读取
# print(dict["geocodes"][0]["location"]) 查看一下位置信息
return (dict["geocodes"][0]["location"]) # 返回位置信息
def destination_info(key, address, keywords, radius):
# 获取目的场所周围poi及poi的经纬度
info = requests.get("https://restapi.amap.com/v3/place/around?parameters",
params={"key":"3fbf8b85af364be7acbf51b22a81b04e",
"location": current_location(key, address),
"keywords": keywords,
"radius": radius})
# 使用get方法调用api,同时传入key,location(当前位置),keywords(目的场所关键字),radisu参数(见文档)
dict = json.loads(info.text)
# 由于目的地关键字有很多位置,比如输入饭店,就会有很多有具体位置的饭店显示,所以要存入列表
poistionlist = [(poistion["name"], poistion["location"]) for poistion in dict["pois"]]
return (poistionlist)
def way_to_destination_ride(key, address, keywords, radius):
# 获取指定位置到周围指定poi的骑行路径规划
poistionlist = destination_info(key, address, keywords, radius)
origin = current_location(key, address)
theway = []
for poistion in poistionlist:
info = requests.get("https://restapi.amap.com/v4/direction/bicycling?parameters",
params={"key": key,
"origin": origin,
"destination": poistion[1]})
# 使用get方法调用api,同时传入key,origin(起点经纬度),destination(目的地经纬度)参数(见文档)
dict = json.loads(info.text)
the_way_to_destination = [pois["instruction"] for pois in dict["data"]["paths"][0]["steps"]]
theway.append((poistion[0], the_way_to_destination))
return theway
def way_to_destination_walk(key, address, keywords, radius):
# 获取指定位置到周围指定poi的步行路径规划
poistionlist = destination_info("3fbf8b85af364be7acbf51b22a81b04e", address, keywords, radius)
origin = current_location("3fbf8b85af364be7acbf51b22a81b04e", address)
theway = []
for poistion in poistionlist:
info = requests.get("https://restapi.amap.com/v3/direction/walking?parameters",
params={"key":"3fbf8b85af364be7acbf51b22a81b04e",
"origin": origin,
"destination": poistion[1]})
# 使用get方法调用api,同时传入key,origin(起点经纬度),destination(目的地经纬度)参数(见文档)
dict = json.loads(info.text)
the_way_to_destination = [pois["instruction"] for pois in dict["route"]["paths"][0]["steps"]]
theway.append((poistion[0], the_way_to_destination))
return theway
def way_to_destination_drive(key, address, keywords, radius):
# 获取指定位置到周围指定poi的开车路径规划
poistionlist = destination_info("3fbf8b85af364be7acbf51b22a81b04e", address, keywords, radius)
origin = current_location("3fbf8b85af364be7acbf51b22a81b04e", address)
theway = []
for poistion in poistionlist:
info = requests.get("https://restapi.amap.com/v3/direction/driving?parameters",
params={"key":"3fbf8b85af364be7acbf51b22a81b04e",
"origin": origin,
"destination": poistion[1]})
# 使用get方法调用api,同时传入key,origin(起点经纬度),destination(目的地经纬度)参数(见文档)
dict = json.loads(info.text)
the_way_to_destination = [pois["instruction"] for pois in dict["route"]["paths"][0]["steps"]]
theway.append((poistion[0], the_way_to_destination))
return theway
address = input("使用者所处位置:")
keywords = input("目的场所:")
way_of=input("出行方式(步行输入1,骑行输入2,开车输入3):")
if int(way_of)==1:
while True:
try:
radius = int(input("搜索范围(米):"))
break
except ValueError:
print("请输入整数") # 规定radius只能为int,默认为1000m,范围是0-3000m
for way in way_to_destination_walk("3fbf8b85af364be7acbf51b22a81b04e", address, keywords, radius):
print(way[0])
for step in way[1]:
print(step)
if int(way_of)==2:
while True:
try:
radius = int(input("搜索范围(米):"))
break
except ValueError:
print("请输入整数") # 规定radius只能为int,默认为1000m,范围是0-3000m
for way in way_to_destination_ride("3fbf8b85af364be7acbf51b22a81b04e", address, keywords, radius):
print(way[0])
for step in way[1]:
print(step)
else:
while True:
try:
radius = int(input("搜索范围(米):"))
break
except ValueError:
print("请输入整数") # 规定radius只能为int,默认为1000m,范围是0-3000m
for way in way_to_destination_drive("3fbf8b85af364be7acbf51b22a81b04e", address, keywords, radius):
print(way[0])
for step in way[1]:
print(step)
一定要看好输出格式啊,步行,骑行,驾车都不一样啊,哎呀~~~~~~(搞了很长时间才发现是route不是routes)