请选择 进入手机版 | 继续访问电脑版
立即注册
 找回密码
 立即注册

!connect_header_login!

!connect_header_login_tip!

!header_login!

!header_login_tip!

查看: 84|回复: 0

借助高德地图web服务api,实现不同出行方式路线规划

[复制链接] [view_bdseo_push]
发表于 2022-8-28 10:09:28 | 显示全部楼层 |阅读模式
    一、简介

    路线规划包括步行、公交、自驾、骑行等。今天,借助高德地图web服务api高德地图骑行路线规划,实现出行路线规划。

    思考

    根据位置获取经纬度

    调用api根据经纬度获取路线

    处理路线数据以便于浏览

    神图API

    对应链接

<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>    <pre class="has"><code class="language-ruby">https://lbs.amap.com/api/webservice/guide/api/direction
</code></pre></p>
    到高德开放平台注册账号,创建自己的项目高德地图骑行路线规划,系统会给你一个key值。

    在开发支持中选择web service,选择web service api

    二、获取经纬度

    输入位置,输出经纬度

<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>    <pre class="has"><code class="language-cs">def get_location_x_y(place):
    #place = input("请输入您要查询的地址")
    url = 'https://restapi.amap.com/v3/geocode/geo?parameters'
    parameters = {
????????'key':'高德官网获取key',
        'address':'%s' % place
    }
    page_resource = requests.get(url,params=parameters)
    text = page_resource.text       #获得数据是json格式
    data = json.loads(text)         #把数据变成字典格式
    location = data["geocodes"][0]['location']
    return location
?
if __name__ == '__main__':
    print(get_location_x_y("北京西站"))
</code></pre></p>
    获取结果

    三、路线规划(四种方式)

    获取起点、目的地经纬度、出行方式

<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>    <pre class="has"><code class="language-makefile">from_place = input("请输入起始地址")
from_location = get_location_x_y(from_place)
to_place = input("请输入目的地")
to_location = get_location_x_y(to_place)
type = input("出行方式(1.公交、2.步行、3.驾车、4.骑行),请输入数字")
</code></pre></p>
    查询路线

    type为出行方式(四种方式对应1、2、3、4)

    不同的出行方式有不同的高德地图web服务api链接

<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>    <pre class="has"><code class="language-bash">url="https://restapi.amap.com"
if type=="1":
    url = url+ "/v3/direction/transit/integrated"
elif type=="2":
    url = url + "/v3/direction/walking"
elif type=="3":
    url = url + "/v3/direction/driving"
elif type == "4":
    url = url + "/v4/direction/bicycling"
</code></pre></p>
    请求参数

<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>    <pre class="has"><code class="language-javascript">parameters = {
    'key': '高德官网获取key',
    'origin': str(from_location),
    'destination': str(to_location),
    'extensions':'all',
    'output':'json',
    'city':'020',
}
</code></pre></p>
    参数中from_location为起点经纬度,to_location为终点经纬度,output为返回数据的格式,这里返回json(官网也给出了很多格式,比如xml,等等)

    数据处理

<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>    <pre class="has"><code class="language-bash">if type=="1":
    txt = txt['route']['transits']
    for i in txt:
        i = i['segments'][0]['bus']['buslines'][0]['name']
        print(i)
elif type=="2":
    txt = txt['route']['paths'][0]['steps']
    for i in txt:
        i = i['instruction']
        print(i)
elif type=="3":
    txt = txt['route']['paths'][0]['steps']
    for i in txt:
        i = i['instruction']
        print(i)
elif type == "4":
    txt = txt['data']['paths'][0]['steps']
    for i in txt:
        i = i['instruction']
        print(i)
</code></pre></p>
    根据出行方式不同,获取的数据key不同,需要进行相应处理,方便浏览。

    四、演示效果

    1、公交车

    2、步行

    3、开车

    4、骑行

    五、结束

    好的,以上就是python借助高德地图web服务对不同出行方式的路线规划。完整的源代码如下获取

    【如何获取本文完整源代码】
生活圈制作

转载请说明出处,本文地址:http://www.nbbike.net/thread-41311-1-1.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表