本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:幽默盒子,一个专注于搞笑,分享快乐的公众号

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-07(10)

2020-08(50)

【folium】pyqt调用显示地图

发布于2021-04-24 17:16     阅读(111)     评论(0)     点赞(0)     收藏(4)



folium文档链接:folium

folium安装方式:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple folium

由于网上加载显示地图大多都是在jupyter上运行的,我的需求是嵌入到pyqt中显示,提供一种思路:将地图保存成.html网页文件,然后用pyqt调用网页。如果想要实时在地图上做标记,可以设置一个定时器,每隔一段时间更新加载地图。

pyqt中显示地图,使用QWebEngineView类(老版本没有这个类),可以安装

pip install PyQtWebEngine -i https://pypi.douban.com/simple/

安装完相关库之后,就可以编写脚本显示地图了;pyqt调用显示地图脚本如下:

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
import sys
import os
import folium

# 调用高德地图http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}
Map = folium.Map(location=[34.2634, 109.0432],
                 zoom_start=16,
                 control_scale=True,
                 tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
                 attr='default')

Map.add_child(folium.LatLngPopup())                     # 显示鼠标点击点经纬度
Map.add_child(folium.ClickForMarker(popup='Waypoint'))  # 将鼠标点击点添加到地图上

# 标记一个实心圆
folium.CircleMarker(
    location=[34.2634, 109.0432],
    radius=1,
    popup='popup',
    color='#DC143C',      # 圈的颜色
    fill=True,
    fill_color='#6495E'  # 填充颜色
).add_to(Map)
Map.save("save_map.html")


class MainWindow(QMainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()
        self.setWindowTitle('地图显示')
        self.resize(1000, 640)
        # 新建一个QWebEngineView()对象
        self.qwebengine = QWebEngineView(self)
        # 设置网页在窗口中显示的位置和大小
        self.qwebengine.setGeometry(20, 20, 960, 600)
        # 在QWebEngineView中加载网址
        path = "file:\\" + os.getcwd() + "\\save_map.html"
        path = path.replace('\\', '/')
        self.qwebengine.load(QUrl(path))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = MainWindow()
    win.show()
    sys.exit(app.exec_())

效果如下:
在这里插入图片描述

使用pyinstaller打包的过程中遇到问题,参考链接
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\natha\AppData\Local\Temp_MEI309082\branca_cnames.json’
解决方案:
找到库文件中以下文件:
\ folium \ folium.py, \ folium \ raster_layers.py, \ branca \ element.py 并对这三个文件作如下修改:

# 注释掉这一行的ENV配置
# ENV = Environment(loader=PackageLoader('branca', 'templates')) 

# 然后添加以下代码 三个文件均作此处理
import os, sys
from jinja2 import FileSystemLoader
if getattr(sys, 'frozen', False):
        # we are running in a bundle
    templatedir = sys._MEIPASS
else:
    # we are running in a normal Python environment
    templatedir = os.path.dirname(os.path.abspath(__file__))
ENV = Environment(loader=FileSystemLoader(templatedir + '\\templates'))

再对 *.spec 文件中作如下修改:
在这里插入图片描述
最后运行打包命令:

pyinstaller -F XXX.spec

注意:pyinstaller打包时,有时候第一次打包成功了,但是exe打不开,可以再重新运行一下打包命令。【经验之谈】

原文链接:https://blog.csdn.net/qq_41821678/article/details/115999323






所属网站分类: 技术文章 > 博客

作者:丸子

链接:https://www.pythonheidong.com/blog/article/952316/73dfdd541e2092f6e3a2/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)