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

news2024/9/20 22:39:38

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

一,注册高德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/direction
    url = 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 route
    else:
        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.coloradmin.cn/o/1238445.html

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

相关文章

Linux 中 .tar 和 tar.gz 的区别

1、前言 有时候你会发现,即便是有些拥有 3 年左右工作经验的运维或开发工程师对 .tar 和 .tar.gz 的区别并不是很清楚。.tar 和 .tar.gz 是在 Linux 系统中用于打包和压缩文件的两种常见格式。它们之间的主要区别在于压缩算法和文件扩展名。 2、区别 .tar .tar 是…

剧情继续:马斯克曝出OpenAI前员工举报信,董事会与奥特曼谈判回归

丰色 发自 凹非寺 量子位 | 公众号QbitAI 经过4天的极限拉扯、反转再反转,奥特曼有可能重新回归了。 据知情人士透露,OpenAI董事会正与奥特曼进行一场“富有成效”的新谈判。 如果奥特曼回到OpenAI,他将继续担任CEO。 与此同时&#xff0c…

909-2015-T1

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 线性表使用公式化描述方式存储。编写一个函数&#xff0c;从一给定的线性表A中删除值在x ~ y&#xff08;x到y&#xff0c;x<y&#xff09;之间的所有元素&#xff0c;要求以较高的效率来实现。提示&#…

【正点原子STM32连载】第五十六章 DSP BasicMath实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html## 第五…

2023 年戴森设计大奖得主是谁?给大楼降温、争取救援机会

2023 年戴森设计大奖得主是谁&#xff1f;给大楼降温、争取救援机会 ​编辑拉风的极客2023/11/22 摘要 当今社会除了持续不断对科技创新保持注目&#xff0c;还有很多年轻发明家为了实际场景的难题提供解决方案。 11 月 15 日&#xff0c;2023 年戴森设计大奖国际大奖名单正…

在 Redis 中使用 JSON 文档:命令行界面(CLI)和 Navicat 集成

Redis&#xff0c;因其极高的性能而闻名&#xff0c;是一款多功能的 NoSQL 数据库&#xff0c;擅长处理键值对。虽然 Redis主要用于处理简单数据结构&#xff0c;但是同样支持更多复杂的数据类型&#xff0c;如列表、集合甚至是 JSON 文件。在本文&#xff0c;我们将深入到 Red…

聚类系列(一)——什么是聚类?

目前在做聚类方面的科研工作, 看了很多相关的论文, 也做了一些工作, 于是想出个聚类系列记录一下, 主要包括聚类的概念和相关定义、现有常用聚类算法、聚类相似性度量指标、聚类评价指标、 聚类的应用场景以及共享一些聚类的开源代码 下面正式进入该系列的第一个部分&#xff…

MySQL数据库入门到大牛_基础_12_MySQL数据类型精讲

文章目录 1. MySQL中的数据类型2. 整数类型2.1 类型介绍2.2 可选属性2.2.1 M2.2.2 UNSIGNED2.2.3 ZEROFILL 2.3 适用场景2.4 如何选择&#xff1f; 3. 浮点类型3.1 类型介绍3.2 数据精度说明3.3 精度误差说明 4. 定点数类型4.1 类型介绍4.2 开发中经验 5. 位类型&#xff1a;BI…

visionOS空间计算实战开发教程Day 5 纹理和材质

在​​Day 4​​​中我们使用了​​ImmersiveSpace​​并在其中添加了一个立方体&#xff0c;但对这个立方体我们只配置了长宽高&#xff0c;并没有做进一步的操作。 本文中我们会通过纹理和材质对这个立方体的六个面分别进行不同的绘制。首先我们将​​ImmersiveView​​分拆…

拒绝“信息茧房”,不做“井底之蛙”

前言 在信息爆炸的时代&#xff0c;我们每天都会被各种各样的信息包围着。这些信息来自各种渠道&#xff0c;如社交媒体、新闻媒体、搜索引擎、推荐系统等等。在算法和选择下&#xff0c;社交平台、购物平台帮大家过滤掉不熟悉、不喜欢、不感兴趣的内容&#xff0c;只推荐想看…

文件的原理和应用

常识: 1 文件包括属性和内容 2 文件有打开和未打开文件&#xff0c; 3 本文先讨论谁打开的文件&#xff0c;以及如何管理已经打开的文件 一 回忆c接口 1 fopen 我们在test.c里面用一下fopen函数&#xff0c;不存在打开的文件会默认创建&#xff0c;那为什么默认新建在当前…

RabbitMQ 的网页界面操作说明

启动 上面给用户添加了角色和权限&#xff0c; 我们就可以登录了 先手动创建两个队列&#xff0c;然后再把这两个队列和交换机绑定&#xff0c;就可以发布消息 回到队列中看看有什么变化 队列中显示绑定了交换机 再看一下队列中发生的变化 可以看到队列中收到了信息

代码随想录二刷 | 链表 |环形链表II

代码随想录二刷 &#xff5c; 链表 &#xff5c;环形链表II 题目描述解题思路 & 代码实现判断链表是否有环如何找到环的入口 题目描述 142.环形链表II 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如…

千梦网创:创业一定要学会打造自己的榜样圈

一、状态 最近一直在学习刘克亚老师的书籍和课程。 克亚老师“国际自由族”的概念实际上就是实现“工作自由”。 财务自由只是一个奋斗目标&#xff0c;但“工作自由”是一种可实现的工作状态。 这种工作状态有一个特征就是全力打造一套能够无限趋近于“全自动”的赚钱系统。…

超详细 | 实验室linux服务器非root账号 | 安装pip | 安装conda

登录实验室公用服务器&#xff0c;个人账号下&#xff08;非root&#xff09;是空的&#xff0c;啥也没有&#xff0c;想安装下pip和conda。 转了一圈&#xff0c;好像没太有针对这个需求写具体博客的&#xff0c;但有挺多讲直接在root下安的&#xff08;用的应该是个人虚拟机&…

代码随想录二刷 | 链表 |链表相交

代码随想录二刷 &#xff5c; 链表 &#xff5c;链表相交 题目描述解题思路 & 代码实现 题目描述 160.链表相交 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 题目数据 保…

透视未来:现代发电厂地区可视化与智慧能源的结合

随着全球能源消费的不断增长&#xff0c;电力需求也在不断上升。作为能源行业的重要组成部分&#xff0c;现代发电厂扮演着不可替代的角色。而现代发电厂的数据管理和监控系统&#xff0c;则是确保其安全、高效、稳定运行的重要手段。在这个背景下&#xff0c;现代发电厂地区可…

Python+Selenium安装及环境配置手把手教会你

前言 Selenium是一个用于web自动化测试的框架&#xff0c;在使用Ajax请求数据的页面中&#xff0c;会出现 sign ,token等密钥&#xff0c;如果考虑去破解可能花费的精力较多&#xff0c;所以考虑借助使用Selenium框架来实现数据爬取。 Selenium 简介 1. 1&#xff0c;组件✨ …

SMBGhost_RCE漏洞(CVE-2020-0796永恒之黑)

https://blog.csdn.net/qq_45372008/article/details/106980409 https://zhuanlan.zhihu.com/p/374949632 SMB 3.1.1协议处理某些请求的方式中存在远程执行代码漏洞&#xff0c;可能被攻击者利用远程执行任意代码。该漏洞的后果十分接近永恒之蓝系列&#xff0c;都利用Windows …