我正在使用 folium (Django/Python)。我创建了一张地图:
def create_map():
m = folium.Map(location=[9.934739, -84.087502], zoom_start=7 )
.....
folium 在 JS 中这样创建地图:
var map_e87b2e996ca04be59a5cfedabc0bf1ad = L.map(
"map_e87b2e996ca04be59a5cfedabc0bf1ad",
{
center: [9.934739, -84.087502],
.....
}
);
我需要的是一种从 folium (Django) 设置我自己的 id 的方法,而不是默认创建的即时 id:map_e87b2e996ca04be59a5cfedabc0bf1ad
我需要这样做,因为我想在地图上创建自定义事件,影响嵌入此地图的 html 文件的其他部分。
完整的ID是
map._name
和map._id
的组合,如果你想覆盖它,你可以使用类似的东西:
map = folium.Map()
map._name = "map_name"
map._id = "1"
然后如果你用
map.get_name()
来调用它,它将是 map_name_1
您可以扭转这个问题,而不是自己管理名称,而是使用
folium
在您的自定义 HTML/CSS/JS 中分配的特定名称,您可以通过 some_map.get_name()
访问该名称。
这里有一个完整的解决方案,其中包含 Folium 中的 single map 和 dualMap 的 Python 代码示例,带有 custom id ,可以帮助从 python 中使用 css 影响地图/地图(例如:在 Streamlit 应用程序中或使用branca注入css...等)
import folium
def create_custom_map(map_name, map_id):
m = folium.Map(location=[36.45, 2.85], tiles='OpenStreetMap', zoom_start=9)
m._name = map_name
m._id = map_id
# Add any other map customization or layers here
return m
# Create the first custom map
map1_name = 'custom_map_name'
map1_id = '69696969'
map1 = create_custom_map(map1_name, map1_id)
# Save the maps to HTML files
map1.save('map.html')
import folium
import folium.plugins
def create_custom_dualmap(map_name, map_id):
m = folium.plugins.DualMap(location=[36.45, 2.85], tiles='OpenStreetMap', zoom_start=9)
# Customize the ID of the left and right maps
m.m1._name = f"{map_name}_left"
m.m1._id = f"{map_id}_left"
m.m2._name = f"{map_name}_right"
m.m2._id = f"{map_id}_right"
# Add any other map customization or layers here
return m
# Create the custom DualMap
dualmap_name = 'custom_dualmap_name'
dualmap_id = '123'
custom_dualmap = create_custom_dualmap(dualmap_name, dualmap_id)
# Save the DualMap to an HTML file
custom_dualmap.save('map.html')