无法在 Pyqt5 应用程序中导出 Folium 绘制多边形上的坐标
Cant export coordinates on Folium draw polygon in Pyqt5 app
我正在使用 folium 在 pyqt5 中编写应用程序来标记一些区域并获取 gps 坐标。应用程序工作我可以绘制多边形形状但是当我单击“导出”按钮时没有任何反应。也许有人有类似的问题并且知道为什么?
import folium, io, sys
from folium.plugins.draw import Draw
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt5 import QtWebEngineWidgets
class Mapy(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.interfejs()
def interfejs(self):
vbox = QVBoxLayout(self)
self.webEngineView = QtWebEngineWidgets.QWebEngineView()
self.loadPage()
vbox.addWidget(self.webEngineView)
self.setLayout(vbox)
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle('mapy')
self.show()
def loadPage(self):
m = folium.Map(
location=[51.7687323,19.4569911], zoom_start=5
)
Draw(
export=True,
filename='my_data.geojson',
position='topleft',
draw_options={'polyline': False, 'rectangle': False,'circle':False, 'circlemarker':False},
edit_options={'poly': {'allowIntersection': False}}
).add_to(m)
data = io.BytesIO()
m.save(data, close_file=False)
self.webEngineView.setHtml(data.getvalue().decode())
if __name__ == '__main__':
app = QApplication(sys.argv)
okno = Mapy()
sys.exit(app.exec_())
您必须使用来自页面配置文件的 downloadRequested
信号来管理下载:
import io
import sys
import folium
from folium.plugins.draw import Draw
from PyQt5.QtWidgets import QApplication, QFileDialog, QVBoxLayout, QWidget
from PyQt5.QtWebEngineWidgets import QWebEngineView
class Mapy(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.interfejs()
def interfejs(self):
vbox = QVBoxLayout(self)
self.webEngineView = QWebEngineView()
self.webEngineView.page().profile().downloadRequested.connect(
self.handle_downloadRequested
)
self.loadPage()
vbox.addWidget(self.webEngineView)
self.setLayout(vbox)
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle("mapy")
self.show()
def loadPage(self):
m = folium.Map(location=[51.7687323, 19.4569911], zoom_start=5)
Draw(
export=True,
filename="my_data.geojson",
position="topleft",
draw_options={
"polyline": False,
"rectangle": False,
"circle": False,
"circlemarker": False,
},
edit_options={"poly": {"allowIntersection": False}},
).add_to(m)
data = io.BytesIO()
m.save(data, close_file=False)
self.webEngineView.setHtml(data.getvalue().decode())
def handle_downloadRequested(self, item):
path, _ = QFileDialog.getSaveFileName(
self, "Save File", item.suggestedFileName()
)
if path:
item.setPath(path)
item.accept()
if __name__ == "__main__":
app = QApplication(sys.argv)
okno = Mapy()
sys.exit(app.exec_())
我正在使用 folium 在 pyqt5 中编写应用程序来标记一些区域并获取 gps 坐标。应用程序工作我可以绘制多边形形状但是当我单击“导出”按钮时没有任何反应。也许有人有类似的问题并且知道为什么?
import folium, io, sys
from folium.plugins.draw import Draw
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt5 import QtWebEngineWidgets
class Mapy(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.interfejs()
def interfejs(self):
vbox = QVBoxLayout(self)
self.webEngineView = QtWebEngineWidgets.QWebEngineView()
self.loadPage()
vbox.addWidget(self.webEngineView)
self.setLayout(vbox)
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle('mapy')
self.show()
def loadPage(self):
m = folium.Map(
location=[51.7687323,19.4569911], zoom_start=5
)
Draw(
export=True,
filename='my_data.geojson',
position='topleft',
draw_options={'polyline': False, 'rectangle': False,'circle':False, 'circlemarker':False},
edit_options={'poly': {'allowIntersection': False}}
).add_to(m)
data = io.BytesIO()
m.save(data, close_file=False)
self.webEngineView.setHtml(data.getvalue().decode())
if __name__ == '__main__':
app = QApplication(sys.argv)
okno = Mapy()
sys.exit(app.exec_())
您必须使用来自页面配置文件的 downloadRequested
信号来管理下载:
import io
import sys
import folium
from folium.plugins.draw import Draw
from PyQt5.QtWidgets import QApplication, QFileDialog, QVBoxLayout, QWidget
from PyQt5.QtWebEngineWidgets import QWebEngineView
class Mapy(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.interfejs()
def interfejs(self):
vbox = QVBoxLayout(self)
self.webEngineView = QWebEngineView()
self.webEngineView.page().profile().downloadRequested.connect(
self.handle_downloadRequested
)
self.loadPage()
vbox.addWidget(self.webEngineView)
self.setLayout(vbox)
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle("mapy")
self.show()
def loadPage(self):
m = folium.Map(location=[51.7687323, 19.4569911], zoom_start=5)
Draw(
export=True,
filename="my_data.geojson",
position="topleft",
draw_options={
"polyline": False,
"rectangle": False,
"circle": False,
"circlemarker": False,
},
edit_options={"poly": {"allowIntersection": False}},
).add_to(m)
data = io.BytesIO()
m.save(data, close_file=False)
self.webEngineView.setHtml(data.getvalue().decode())
def handle_downloadRequested(self, item):
path, _ = QFileDialog.getSaveFileName(
self, "Save File", item.suggestedFileName()
)
if path:
item.setPath(path)
item.accept()
if __name__ == "__main__":
app = QApplication(sys.argv)
okno = Mapy()
sys.exit(app.exec_())