python调用百度地图实现导航pc_[python]百度地图API,正/逆地理编码,路线规划接口的调用,实现输出出行的距离和......

[Python] 纯文本查看 复制代码'''

文件名:L17.py

作者:小饭团

创建时间:2019年1月11日15:17:03

文件描述:调用Web服务API接口,百度地图路线规划 正/逆地理编码

'''

#-*- coding:utf-8 -*-

import urllib.parse

import urllib.request

import json

key='62PM27fx1Fbhq1pOWdpRlWt2o9B8tL9O'

#自定义类型

'''

属性名1:x 用于存储经度 类型 float

属性名2:y 用于存储纬度 类型 float

'''

class locationXY:

def __init__(self,x,y):

self.x=x

self.y=y

#正/逆地理编码

'''

函数名:getLocation

参数一:address 地名 类型 str 内部字符串类型

返回自定义类型数据 locationXY

'''

def getLocation(address):

data = urllib.parse.urlencode({'address': address, 'output': 'json','ak':key})

response = urllib.request.urlopen('http://api.map.baidu.com/geocoder/v2/?%s' % data)

html = response.read()

data = html.decode('utf-8')

result=json.loads(data)

lng=(result['result']['location']['lng'])

lat=(result['result']['location']['lat'])

l=locationXY(lng,lat)

return l

#百度地图路线规划服务

'''

函数名:计算所有路线

参数一:origin 起点位置 自定义类型locationXY

参数二:destionation 终点位置 自定义类型locationXY

无返回值

'''

def 计算所有路线(origin,destionation):

'''

tactics_incity 市内公交换乘策略

可选,默认为0

可选值:

0 推荐

1 少换乘

2 少步行

3 不坐地铁

4 时间短

5 地铁优先

'''

tactics_incity=0

data = urllib.parse.urlencode({'origin':'%s,%s'%(origin.y,origin.x),'destination':'%s,%s'%(destionation.y,destionation.x),'tactics_incity':tactics_incity,'ak':key})

response = urllib.request.urlopen('http://api.map.baidu.com/direction/v2/transit?%s' % data)

html = response.read()

data = html.decode('utf-8')

result = json.loads(data)

#print(data)

路线总数 = result['result']['total']

if (result['status']==0):

for x in range(路线总数):

if (result['status']==0):

distance=result['result']['routes'][x]['distance']

duration=result['result']['routes'][x]['duration']

print('路线:%s,距离%s米,花费%s分钟'%(x,distance,duration/60))

else:

print('error : %d'%result['status'])

'''

status 备注

0:成功

1:服务器内部错误

2:参数无效

1001:没有公交方案

1002:没有匹配的POI

'''

def main():

l1 = locationXY(113.464838,23.111949)#大沙东地铁站的坐标

l2 = getLocation('御富科贸园b2座205-20')

#print("%s\n%s"%(l1.x,l1.y))

计算所有路线(l1,l2)

#l2 =

if __name__ == '__main__':

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值