Folium - 基于当前日期的图标颜色 - eval()?

Folium - icon color based on current date - eval()?

我正在尝试设置我的地图,以便标记图标根据当前日期和目标日期改变颜色。

我可以通过使用正则表达式更新生成的 HTML 来实现此目的:

var icon_4089458f0c8541b482236fb9d52bb7f9 = L.AwesomeMarkers.icon(
    {"date": "2021-10-21",
    "extraClasses": "fa-rotate-0",
    "icon": "info-sign",
    "iconColor": "white",
    "markerColor": eval('if (new Date("2021-09-01").setHours(0, 0, 0, 0) < new Date().setHours(0, 0, 0, 0)) { "lightgray" }
                         else if (new Date("2021-09-01").setHours(0, 0, 0, 0) == new Date().setHours(0, 0, 0, 0)) { "red" }
                         else { "green" }'),
    "prefix": "glyphicon"}
);

不过这很笨重。

我尝试将 eval 传递给 folium.Icon(color=,但这只会创建命令的转义字符串并最终无法正常工作。

有没有办法使用 folium 传递这样的东西,以便它生成具有所需 eval 的地图?

不确定是否是最佳解决方案,但一直到 folium 的图标 class 并进行了一些改动。

color_js = r'''eval('if (new Date("''' + date_en + '''").setHours(0, 0, 0, 0) < new Date().setHours(0, 0, 0, 0)) { "lightgray" } else if (new Date("''' + date_en + '''").setHours(0, 0, 0, 0) == new Date().setHours(0, 0, 0, 0)) { "red" } else { "''' + clr + '''" }')'''
my_ico = folium.Icon(icon="info-sign")
my_ico.options.pop("markerColor")
optns = re.sub("'", '"', re.sub("(?:\{|\})", "", str(my_ico.options)))
template = u"""
        {% macro script(this, kwargs) %}
            var {{ this.get_name() }} = L.AwesomeMarkers.icon(
                {""" + optns + u""", "markerColor": """ + color_js + u""" },
            );
            {{ this._parent.get_name() }}.setIcon({{ this.get_name() }});
        {% endmacro %}
        """
my_ico._template = Template(template)
folium.Marker([lat, lon], icon=my_ico).add_to(fmap)