Reputation: 23
Im writing app in pyqt5 using folium to mark some area and get gps coordinates. App works I can draw polygon shape but when Im clicking Export button nothing happend. Maybe someone had similiar problem and knows why?
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_())
Upvotes: 2
Views: 1525
Reputation: 243887
You have to manage the downloads using the downloadRequested
signal from the page profile:
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_())
Upvotes: 1