【folium】pyqt调用显示地图

📅 2026/7/11 10:32:39
【folium】pyqt调用显示地图
folium文档链接foliumfolium安装方式: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调用显示地图脚本如下fromPyQt5.QtCoreimport*fromPyQt5.QtWidgetsimport*fromPyQt5.QtWebEngineWidgetsimport*importsysimportosimportfolium# 调用高德地图http://webrd02.is.autonavi.com/appmaptile?langzh_cnsize1scale1style7x{x}y{y}z{z}Mapfolium.Map(location[34.2634,109.0432],zoom_start16,control_scaleTrue,tileshttp://webrd02.is.autonavi.com/appmaptile?langzh_cnsize1scale1style7x{x}y{y}z{z},attrdefault)Map.add_child(folium.LatLngPopup())# 显示鼠标点击点经纬度Map.add_child(folium.ClickForMarker(popupWaypoint))# 将鼠标点击点添加到地图上# 标记一个实心圆folium.CircleMarker(location[34.2634,109.0432],radius1,popuppopup,color#DC143C,# 圈的颜色fillTrue,fill_color#6495E# 填充颜色).add_to(Map)Map.save(save_map.html)classMainWindow(QMainWindow):def__init__(self):super(QMainWindow,self).__init__()self.setWindowTitle(地图显示)self.resize(1000,640)# 新建一个QWebEngineView()对象self.qwebengineQWebEngineView(self)# 设置网页在窗口中显示的位置和大小self.qwebengine.setGeometry(20,20,960,600)# 在QWebEngineView中加载网址pathfile:\\os.getcwd()\\save_map.htmlpathpath.replace(\\,/)self.qwebengine.load(QUrl(path))if__name____main__:appQApplication(sys.argv)winMainWindow()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(loaderPackageLoader(branca, templates))# 然后添加以下代码 三个文件均作此处理importos,sysfromjinja2importFileSystemLoaderifgetattr(sys,frozen,False):# we are running in a bundletemplatedirsys._MEIPASSelse:# we are running in a normal Python environmenttemplatediros.path.dirname(os.path.abspath(__file__))ENVEnvironment(loaderFileSystemLoader(templatedir\\templates))再对 *.spec 文件中作如下修改最后运行打包命令pyinstaller-F XXX.spec注意pyinstaller打包时有时候第一次打包成功了但是exe打不开可以再重新运行一下打包命令。【经验之谈】