如何在我的叶片地图上创建一个弹出窗口以显示有关节点的信息?如下图所示,我的folium地图当前正在从我从立交桥turbo下载的json文件中提取数据。因此,地图上建筑物的蓝色轮廓。我在创建弹出窗口时遇到麻烦,当用户单击建筑物时,弹出窗口似乎会显示信息,例如在立交桥涡轮增压器中。目前,我的代码没有任何作用,因为当我尝试单击建筑物而不是弹出窗口时,单击地图只会放大它。
* PS,我当前的GUI基于我发布了“ How to include folium map into PyQt5 application window?”的另一个问题提供给我的答案
Folium Map
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())
问题是您正在创建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)