将鼠标单击到python脚本(streamlit webapp)时从叶地图返回纬度、经度值

将鼠标单击到python脚本(streamlit webapp)时从叶地图返回纬度、经度值,python,web-applications,onclick,folium,streamlit,Python,Web Applications,Onclick,Folium,Streamlit,我正在编写一个webapp,其中用户将单击地图,纬度、经度将返回到python脚本。这个webapp是写在streamlight上的,对于地图,我使用folium。目前,我使用folium.LatLngPopup()获取单击位置的单击长度,但我非常困惑如何在python脚本中检索值以进行进一步处理 这是它目前的样子: #代码片段 import streamlit as st from streamlit_folium import folium_static import folium m =

我正在编写一个webapp,其中用户将单击地图,纬度、经度将返回到python脚本。这个webapp是写在streamlight上的,对于地图,我使用folium。目前,我使用folium.LatLngPopup()获取单击位置的单击长度,但我非常困惑如何在python脚本中检索值以进行进一步处理

这是它目前的样子:

#代码片段

import streamlit as st
from streamlit_folium import folium_static
import folium
m = folium.Map()
m.add_child(folium.LatLngPopup())
folium_static(m)

它可能没有本机解决方案,但任何变通方法都将受到赞赏

我最近遇到了同样的问题,获取纬度和经度,然后打印或将值保存到变量中。显然,当我试图创建streamlit.button时,我发现通常的streamlit是静态的,如果单击该按钮,应该向变量计数器添加1。结果:无论单击多少次,变量计数器都打印为1

为了能够获取输入,streamlight组件应该是。 我可能无法清楚地解释这一点,因为我在python或javascript方面仍然是新手,但简而言之,它假设会听取值的变化

解决方案是创建双向组件,后来我发现了这个很棒的回购协议。要运行它,只需遵循README.md。假设您已经在虚拟环境中安装了Streamlight,请执行
npm安装
npm运行启动
。然后在不同的终端/命令行中运行“
streamlit run file.py
”。单击运行Streamlight的终端的url


如果地图没有显示,请转到
my_component/frontend/src/index.tsx
并放置您的mapbox.com accessToken。要获取accessToken,您应该首先注册到mapbox.com。最好的做法是使用
.env
并从那里调用mapbox accessToken,以保持代码更干净。

您对哪些特定部分感到困惑或有问题?将这些纬度经度值从弹出窗口传递到python变量。目前,包只显示一个对开本地图,它没有双向数据传输。如果这是您想要的功能,我建议在GitHub存储库上打开一个问题(我是包开发人员)嘿,Randy,我使用了您的包,首先感谢您将它放在那里。我将在github上发布一个关于它的问题。但是现在有没有办法解决这个问题,我尝试了很多方法,但是我对JS知识的缺乏和folium对JS->python通信的限制让我无法实现它。不,目前还没有办法解决这个问题。正如我所说,数据目前只单向流动,从Python到JavaScript。没有返回值。