html 使用Python向多个Follow标记添加Clickevent函数

3htmauhk  于 2022-12-09  发布在  Python
关注(0)|答案(1)|浏览(206)

我有一个html文件,已生成的folium,其中是多个folium标记表示一系列不同的位置。
使用python,我想遍历html文件,并为每个标记添加一个click事件函数,以便在发生事件时返回lat/lon。
我已经创建了函数:

.on('click', function(e) {
     var point = e.latlng;

     document.querySelector('meta[name="point"]').setAttribute("content", point);
})

下面是一个folium标记部分的示例,我需要在其中附加函数(在'addTo(map)'之后):

var marker_b05545cf05b08cd5d04cd4ea09541226 = L.marker(
     [51.7678, -0.00675564],
     {}
     ).addTo(map_97dd2eeb89fe7d0a2f70926e61b8eeab);

希望最终的代码看起来像这样:

var marker_b05545cf05b08cd5d04cd4ea09541226 = L.marker(
     [51.7678, -0.00675564],
     {}
     ).addTo(map_97dd2eeb89fe7d0a2f70926e61b8eeab).on('click', function(e) {
          var point = e.latlng;

          document.querySelector('meta[name="point"]').setAttribute("content", point);
});

我试着看看我是否可以用Beautiful Soup来实现这个功能,但没有找到任何东西,因为它通常围绕着用id等编辑特定的标签,我也简要地研究了jinja 2,但它似乎不像你可以附加到html脚本的特定部分,而只是在它的结尾。
任何帮助或建议在哪里寻找将不胜感激。

koaltpgm

koaltpgm1#

您可以修改Marker模板,使其包含onClick事件(javascript组件)。以下示例将在单击时向latlng发出警报。

import folium
from jinja2 import Template
from folium.map import Marker

# Modify Marker template to include the onClick event
click_template = """{% macro script(this, kwargs) %}
    var {{ this.get_name() }} = L.marker(
        {{ this.location|tojson }},
        {{ this.options|tojson }}
    ).addTo({{ this._parent.get_name() }}).on('click', onClick);
{% endmacro %}"""

# Change template to custom template
Marker._template = Template(click_template)

location_center = [51.7678, -0.00675564]
m = folium.Map(location_center, zoom_start=13)

# Create the onClick listener function as a branca element and add to the map html
click_js = """function onClick(e) {
                 var point = e.latlng; alert(point)
                 }"""
                 
e = folium.Element(click_js)
html = m.get_root()
html.script.get_root().render()
html.script._children[e.get_name()] = e

#Add marker (click on map an alert will display with latlng values)
marker = folium.Marker([51.7678, -0.00675564]).add_to(m)

相关问题