如何使用json文件中的数据在化石图上创建弹出窗口?

问题描述 投票:0回答:1

如何在我的叶片地图上创建一个弹出窗口以显示有关节点的信息?如下图所示,我的folium地图当前正在从我从立交桥turbo下载的json文件中提取数据。因此,地图上建筑物的蓝色轮廓。我在创建弹出窗口时遇到麻烦,当用户单击建筑物时,弹出窗口似乎会显示信息,例如在立交桥涡轮增压器中。目前,我的代码没有任何作用,因为当我尝试单击建筑物而不是弹出窗口时,单击地图只会放大它。

* PS,我当前的GUI基于我发布了“ How to include folium map into PyQt5 application window?”的另一个问题提供给我的答案

Folium Map

enter image description here

CODE

 with open('exportBuildings.geojson') as access_json:
            read_content = json.load(access_json)

 feature_access = read_content['features']


# Creating folium map
for feature_data in feature_access:
            buildingName = feature_data['properties']

m = folium.Map(location=[1.400150, 103.910172], titles="Punggol", zoom_start=17)
nodeData = os.path.join('exportFULL.geojson')
folium.GeoJson(nodeData).add_child(folium.Popup(buildingName))
folium.GeoJson(nodeData).add_to(m)
data = io.BytesIO()
m.save(data, close_file=False)
self.view.setHtml(data.getvalue().decode())
python pyqt5 folium
1个回答
0
投票

说明:

问题是您正在创建2个GeoJSON项目:

folium.GeoJson(nodeData).add_child(folium.Popup(buildingName))
folium.GeoJson(nodeData).add_to(m)

[在第一个窗口中,您将弹出窗口添加为子窗口,但未将其添加到地图中;在第二个窗口中,您将其添加到地图中,但没有弹出窗口,也就是说,在地图上只能看到GeoJson没有弹出窗口。

解决方案:

解决方案是仅创建一个添加了项并且将弹出窗口建立为子项的GeoJson:

geo_json = folium.GeoJson(nodeData)
geo_json.add_child(folium.Popup(buildingName))
geo_json.add_to(m)

利用返回相同项目的add_to()和add_child()属性可以简化为:

folium.GeoJson(nodeData).add_to(m).add_child(folium.Popup(buildingName))

folium.GeoJson(nodeData).add_child(folium.Popup(buildingName)).add_to(m)
© www.soinside.com 2019 - 2024. All rights reserved.