将多个图像添加到大叶地图标记中的多个 html iframe?

如何解决将多个图像添加到大叶地图标记中的多个 html iframe?

我有一些数据框,从中提取了一些列表,然后我创建了一个 for_loop 以遍历这些列表并将所需的信息插入到大叶地图标记中。 这是代码

sa_df = pd.DataFrame({
    "name":["Al_riyad","Makkah","Aseer","Al_madinah","Eastern_region","northern_borders","Al_bahah","Najran","Jazan","Al_qaseeem","Hail","Al_jawf","Tabuk"],"latitude":[23.05,21.389082,19.15,24.9,24.0,30.25,20.16667,18.41667,17.33333,27.08333,27.4,30.05,28.25],"longitude":[45.55,39.857910,42.95,39.5,49.75,42.41667,41.43333,46.91667,42.66667,43.46667,41.45,39.6,37.16667],"images":["alriyad.png","makkah.png","aseer.png","madina.png","eastern_region.png","northern_borders.png","albahah.png","najran.png","jazan.png","alqaseem.png","hail.png","aljawf.png","tabuk.png"],"population":["8,216,284","8,557,766","2,211,875","1,423,935","4,900,325","365,231","476,172","582,243",567,547","699,774","508,475","910,030"],"dfs_deaths":[alriyad["deaths"].sum(),makkah["deaths"].sum(),aseer["deaths"].sum(),madina["deaths"].sum(),eastern_region["deaths"].sum(),northern_borders["deaths"].sum(),albahah["deaths"].sum(),najran["deaths"].sum(),jazan["deaths"].sum(),alqaseem["deaths"].sum(),hail["deaths"].sum(),aljawf["deaths"].sum(),tabuk["deaths"].sum()],"dfs_recovories":[alriyad["recovories"].sum(),makkah["recovories"].sum(),aseer["recovories"].sum(),madina["recovories"].sum(),eastern_region["recovories"].sum(),northern_borders["recovories"].sum(),albahah["recovories"].sum(),najran["recovories"].sum(),jazan["recovories"].sum(),alqaseem["recovories"].sum(),hail["recovories"].sum(),aljawf["recovories"].sum(),tabuk["recovories"].sum()],"dfs_cases":[alriyad["cases"].sum(),makkah["cases"].sum(),aseer["cases"].sum(),madina["cases"].sum(),eastern_region["cases"].sum(),northern_borders["cases"].sum(),albahah["cases"].sum(),najran["cases"].sum(),jazan["cases"].sum(),alqaseem["cases"].sum(),hail["cases"].sum(),aljawf["cases"].sum(),tabuk["cases"].sum()]
})

lat = list(sa_df["latitude"])
lon = list(sa_df["longitude"])
name = list(sa_df["name"])
image = list(sa_df["images"])
population = list(sa_df["population"])
deaths = list(sa_df["dfs_deaths"])
recovories = list(sa_df["dfs_recovories"])
cases = list(sa_df["dfs_cases"])

m = folium.Map(location=[23.8859,45.0792],zoom_start=4)
fg = folium.FeatureGroup(name="My Map").add_to(m)

for lt,ln,nm,img,ppl,dths,reco,case in zip(lat,lon,name,image,population,deaths,recovories,cases):
    html = f'''
        <p>region: {nm}<p/>
        <p>population: {ppl}<p/>
        <p style="color:blue">total_cases: {case}<p/>
        <p style="color:green">total_recovories: {reco}<p/>
        <p style="color:red">total_deaths: {dths}<p/>
        <p>date: feb_2021</p>
        <img src="{img}">'''
    iframe = folium.IFrame(html,width=300,height=400)
    popup = folium.Popup(iframe,max_width=400)
    marker = folium.Marker([lt,ln],popup=(popup),tooltip="click for covid-19 info").add_to(m)
    m.add_child(marker)
m

如您所见,我在 python 文件的同一目录中有一些图像,我使用 f_string 将变量插入 HTML 并循环遍历它们。 当我运行代码时一切都很好。标记显示所需的信息,但图像没有显示在这里是它的样子:

image

。我看到了这个:Adding JPG Images to folium popup 但我不明白它是如何工作的,除了 f 字符串会涉及 HTML 字符串中的任何大括号。我该如何解决这个问题?换句话说,有没有办法解码多个图像,遍历它们,然后将它们插入到 folium 弹出窗口中而不拦截 f-string,或者是否有另一种方法而不是 f-string? windows 10 python 3.9.1 初学者。

解决方法

在对格式方法和 f-string 方法进行了一些研究后,我发现我只需要进行以下操作:

for lt,ln,nm,img,ppl,dths,reco,case in zip(lat,lon,name,image,population,deaths,recovories,cases):
    encoded = base64.b64encode(open(img,'rb').read()).decode()
    html = f'''
        <p>region: {nm}<p/>
        <p>population: {ppl}<p/>
        <p style="color:blue">total_cases: {case}<p/>
        <p style="color:green">total_recovories: {reco}<p/>
        <p style="color:red">total_deaths: {dths}<p/>
        <p>date: feb_2021</p>
        <img src="data:image/jpeg;base64,{encoded}">'''
    iframe = folium.IFrame(html,width=300,height=300)
    popup = folium.Popup(iframe,max_width=400)
    marker = folium.Marker([lt,ln],popup=(popup),tooltip="click for covid-19 info").add_to(m)
    m.add_child(marker)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?