0

我有以下代码在 Jupyter 笔记本中运行良好:

import os
import json
import random
import requests

from ipyleaflet import Map, GeoJSON, LayersControl

def handle_click(**kwargs):
    print(kwargs.get('feature')['properties']['ID1'])

with open('roadway.geojson', 'r') as f:
    data = json.load(f)

m = Map(center=(39.7, -86), zoom=10)

geo_json = GeoJSON(
    data=data,
   
)
m.add_layer(geo_json)
geo_json.on_click(handle_click)
m.add_control(LayersControl())

m

我想使用 pyqt5 在窗口中显示它。我想我需要使用 pyqtlet 编写一个等效的代码,我尝试这样做,但我不知道如何添加我的geojson文件,然后当然使用 pyqtlet 处理我的 geojson 层上的鼠标点击。这是我对 pyqtlet 的试用:

import sys
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget
from pyqtlet import L, MapWidget


class MapWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.mapWidget = MapWidget()
        self.layout = QVBoxLayout()
        self.layout.addWidget(self.mapWidget)
        self.setLayout(self.layout)

        self.map = L.map(self.mapWidget)
        self.map.setView([39.7, -86], 10)
        L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png').addTo(self.map)
        self.data = L.layerGroup("roadway.geojson") ### This is where I get stuck and of course, how to handle clicks on this layer

        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    widget = MapWindow()
    sys.exit(app.exec_())
4

0 回答 0