pyqt5 窗口调用网页高德地图kpi,进行实时地图导航

作为主项目功能的一部分,这部分我想单独记录下来

一,注册高德kpi【进行实名认证】

高德开放平台 | 高德地图API (amap.com)

二,申请Key

三,进入路径规划-API文档-开发指南-Web服务 API|高德地图API (amap.com)

 找到你需要的路径规划的文档,我选的是“驾车路径规划”

这一部分也便是获取数据的关键了

对应的代码如下:

首先将官方给的url,进行添加,我加入了,起始地点,终止地点,以及starategy【选择不同的策略】,以及key【刚才申请的key】

def get_route(start, end, mode, amap_key):# 这里的url中选择是步行,公交还是驾车路径,本文中driving?表示驾车,具体介绍见:https://lbs.amap.com/api/webservice/guide/api/directionurl = f'https://restapi.amap.com/v3/direction/driving?origin={start}&destination={end}&strategy={mode}&key={amap_key}'response = requests.get(url)data = response.json()if data['status'] == '1':route = data['route']['paths'][0]['steps']# print(route)time = data['route']['paths'][0]['duration']       # 当前的行驶时间print(time)return routeelse:print('请求失败,请检查输入参数。')return None

 底下获取route路线和time时间的两行代码,写法是:

依次类推,相当于就是先找到这个大类,再去找小类,其次,就是“[0]”,代表的是第一条路径的对应的属性,如果你不想也可以改为[1]......

def exchange_route(route):if route:for i, step in enumerate(route):list_latlon.append(step["polyline"])else:print('无法获取路线规划。')# 获取街道地图for item in list_latlon:points = item.split(';')for point in points:coords = point.split(',')Lon.append(float(coords[0]))Lat.append(float(coords[1]))def PlotLineOnMap(Lat, Lon, filename):# 给出的坐标系为GCJ-02,如果需要测试google地图,需要进行坐标转换tri = np.array(list(zip(Lat, Lon)))san_map = folium.Map(location=[34.155709, 108.904262],zoom_start=13,# 高德街道图# tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',tiles='https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=16&scale=1&style=8&x={x}&y={y}&z={z}',# 高德卫星图attr='default')folium.PolyLine(tri, color='#3388ff', fill=False).add_to(san_map)marker_cluster = plugins.MarkerCluster().add_to(san_map)for lat, lon in zip(Lat, Lon):folium.Marker([lat, lon], color='red').add_to(marker_cluster)file_path = f"{filename}.html"san_map.save(file_path)

代码分析:

exchange_route(route)
接收一个路线参数,然后提取其中每个步骤的经纬度坐标信息,并存储在list_latlon列表中
def updated_maps(ending_location, user_id):

将给定的经纬度坐标存放在一个列表当中,然后调用folium获取从起点开始,借助多个经纬度坐标点绘制路线图,同时进行标签,然后生成html文件,保存

    san_map = folium.Map(location=[34.155709, 108.904262],zoom_start=13,# 高德街道图# tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',tiles='https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=16&scale=1&style=8&x={x}&y={y}&z={z}',# 高德卫星图attr='default')

zoom_start :是当前地图的放大倍数

tiles是瓦片服务   这是我找到的一个宝藏地址         :https://www.cnblogs.com/HandyLi/p/11137367.html

 四,地图显示:

使用qwebengine控件去显示网页

    def show_path(self, user_id):self.qwebengine.setFixedSize(700, 400)self.grid_layout.addWidget(self.qwebengine, 3, 1, 1, 1)# path = "file:\\" + os.getcwd() + "\\showpoint.html"path = "file:\\" + os.getcwd() + f"\\map_{user_id}.html"path = path.replace('\\', '/')self.qwebengine.load(QUrl(path))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/159562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【必读】从零开始,一步步教你安装nginx,搭建个人博客网站!

nginx搭建个人网站 Nginx是一款轻量级Web服务器、反向代理服务器以及电子邮件代理服务器,并且具有高并发连接处理能力和低内存消耗的特点。它也可以用于负载均衡和缓存控制等功能。 功能: 静态网站服务器:Nginx可以用来作为静态网站服务器&am…

员工微信私下收红包,企业如何加强监管

随着智能手机的普及和社交软件的兴起,越来越多的企业和员工开始使用微信等社交应用程序进行日常工作交流和业务协作。然而,与此同时,一些行业的员工在微信上私下收取红包的问题也日益严重,这不仅违反了公司的规定,也损…

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署

KubernetesGitlabJenkinsArgoCD多集群部署 文章目录 KubernetesGitlabJenkinsArgoCD多集群部署1. KubernetesGitlabJenkinsArgoCD多集群部署2. 添加WebHooks自动触发3. Jenkins-构建-执行Shell4. 制作镜像及修改Yaml文件4.1 Dockerfile4.2 Build-Shell 5.自动部署Demo测试5.1 推…

JSP EL表达式基本使用

今天我们来说EL表达式 这在整个jsp中都是非常重要的一章 因为 如果我们用 <%属性%> 属性为空时 直接就是个 null 这个肯定是不能让用户看到的东西 所以 我们就需要EL表达式 例如 我们jsp代码编写如下 <% page contentType"text/html; charsetUTF-8" page…

LeetCode每日一题(双指针)

最大连续1的个数Ⅲ 使用双指针每次当0的个数达到k&#xff0c;开始反转&#xff0c;返回最大。 class Solution {public int longestOnes(int[] nums, int k) {int ans-1;for(int i0,j0,cnt0;i< nums.length;i){if(nums[i]0)cnt;while(cnt>k){if(nums[j]0)cnt--;j;}ans…

React函数组件渲染两次

渲染两次是因为react默认开启了严格模式 React.StrictMode标签作用&#xff1a; 1、识别不安全的生命周期 2、关于使用过时字符串 ref API 的警告 3、关于使用废弃的 findDOMNode 方法的警告 4、检测意外的副作用 5、检测过时的 context API 注释掉React.StrictMode即为关闭严…

【Windows 常用工具系列 12 -- win11怎么设置不睡眠熄屏 |win11设置永不睡眠的方法】

文章目录 win11 怎么设置不睡眠熄屏 使用笔记本电脑的时候&#xff0c;如果离开电脑时间稍微长一点就会发现息屏了&#xff0c;下面介绍 设置 Win11 永不睡眠息屏的方法&#xff0c;有需要的朋友们快来看看以下详细的教程。 win11 怎么设置不睡眠熄屏 在电脑桌面上&#xff0c…

最快的ebpf开发环境搭建方式

环境搭建 启动容器 sudo docker run --rm -it --privileged \-v /lib/modules:/lib/modules:ro \-v /sys:/sys:ro \-v /usr/src:/usr/src:ro \alpine:3.12 安装依赖 sed -i s/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g /etc/apk/repositoriesapk add bcc-too…

微信怎么设置自动回复?

自动回复的用处 微信自动回复可以提高沟通效率。当你无法立即回复消息时&#xff0c;设置自动回复可以让对方知道你的情况&#xff0c;并且不会因为长时间没有回复而产生误解或不满。 微信自动回复可以节省时间和精力。如果你经常收到类似的询问或回复&#xff0c;通过设置自动…

STM32CubeMX学习笔记(2)--DSP库的使用

1.DSP库简介 STM32的DSP库是为了支持数字信号处理应用而设计的&#xff0c;它包含了一系列优化的数学函数和算法&#xff0c;能够在STM32微控制器上高效地执行数字信号处理任务。 DSP库通常包括以下主要特性&#xff1a; 1.数学函数库&#xff1a; 包括各种基本的数学运算函数…

JS 循环JSON将数据遍历到Table里面

在研发过程中&#xff0c;我们有时候需要在页面弹出框中展示表格数据&#xff0c;这就需要将JSON数据循环&#xff0c;遍历到一个Table里面&#xff0c;具体代码如下&#xff1a; JS&#xff1a; function LoadFun() {$("#detail").html("");var html &q…

LinkedBlockingQueue的drainTo方法

LinkedBlockingQueue是Java中的一个阻塞队列实现&#xff0c;它支持多线程并发操作。drainTo方法是LinkedBlockingQueue提供的一个方法&#xff0c;用于将队列中的元素转移到另一个集合中。 drainTo方法有两个重载方法&#xff0c;分别为&#xff1a; 1. drainTo(Collection&…

Python语言:猜数字游戏案例讲解

猜数字游戏题目要求如下&#xff1a;该程序随机生成一个1到100之间的整数&#xff0c;然后要求玩家在有限的次数内猜出这个数字。如果玩家猜对了&#xff0c;游戏结束并显示成功信息&#xff1b;如果玩家猜错了&#xff0c;程序会提示玩家猜的数字是偏大还是偏小&#xff0c;并…

Django(ORM事务操作|ORM常见字段类型|ORM常见字段参数|关系字段|Meta元信息)

文章目录 ORM事务操作什么是事务&#xff1f;事务的产生事务的四大特征ORM中如何使用事务 ORM字段类型常用字段与不常用字段类型ORM还支持用户自定义字段类型 ORM字段参数关系字段ForeignKey外键on_delete参数设置的值 OneToOneField与ForeignKey的区别多对多关系建立的方式ORM…

O2OA(翱途)开发平台 V8.2已发布,更安全、更高效、更开放

尊敬的 O2OA (翱途) 平台合作伙伴、用户以及亲爱的开发小伙伴们&#xff0c;V8.2 版本已正式发布&#xff0c;大家可以去官网上下载最新版本。 上次 8.1 的发布是在 9 月 1 日&#xff0c;又过去两个多月&#xff0c;O2OA 研发团队始终踏踏实实地做好产品的研发及优化工作&…

③【List】Redis常用数据类型: List [使用手册]

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ Redis List ③Redis List 操作命令汇总1. lpus…

6 Redis的慢查询配置

1、redis的命令执行流程 redis的慢查询只针对步骤3 默认情况下&#xff0c;慢查询的阈值是10ms 在配置文件中进行配置 //这个参数的单位为微秒 //如果将这个值设置为负数&#xff0c;则会禁用慢日志功能 //如果将其设置为0&#xff0c;则会强制记录每个命令 slowlog-log-slow…

【python学习】基础篇-常用模块-

Python中的json模块用于处理JSON数据&#xff0c;提供了将Python对象转换为JSON字符串的方法(dumps),以及将JSON字符串解析为Python对象的方法(loads)。 以下是json模块的一些常用方法&#xff1a; 1、将Python对象obj转换为JSON字符串。 json.dumps(obj, *, skipkeysFalse,…

ATFX汇市:非美货币扎堆升值,唯有USDCAD表现平平

ATFX汇市&#xff1a;10月4日至今&#xff0c;美元指数累计跌幅已经超过3.6%&#xff0c;最低触及103.18点&#xff0c;中期均线MA30被跌破&#xff0c;强势周期可能即将转变为弱势周期。随着美元的下跌&#xff0c;大部分非美货币快速升值&#xff0c;欧元、英镑、日元的升值幅…

对SPA的理解、对 vue组件化的理解

一、对SPA的理解? 理解基本概念 SPA(single-page application)单页应用&#xff0c;默认情况下我们编写 Vue、React 都只有一个html 页面&#xff0c;并且提供一个挂载点&#xff0c;最终打包后会再此页面中引入对应的资源。 (页面的渲染全部是由JS动态进行渲染的)。切换页面时…