Folium标记位置偏移及阴影去除问题求助
Folium标记位置偏移及阴影去除解决方案
一、修正标记位置偏移
标记视觉上和路线端点错位,核心原因是默认图标的锚点没有对准图标底部中心。只需在创建folium.Icon时手动设置icon_anchor参数,调整到图标底部中心与坐标点重合即可。
对于Font Awesome的flag-chechered图标,推荐设置icon_anchor=(10, 40)——第一个值控制水平偏移(正数向右),第二个控制垂直偏移(正数向下),如果效果不对可以微调数值。
二、删除标记阴影
有两种简单方法可以去掉默认的标记阴影:
方法1:直接关闭Marker阴影
在创建folium.Marker时,通过options参数添加shadow: False,保留原有图标样式的同时关闭阴影:
options={'shadow': False}
方法2:用DivIcon自定义无阴影图标
如果需要更灵活的样式控制(比如去掉默认的圆形背景),可以使用folium.DivIcon直接渲染纯Font Awesome图标,完全避免阴影:
from folium.features import DivIcon start_icon = DivIcon( icon_size=(20, 30), icon_anchor=(10, 30), html=f'<div style="font-size: 24px; color: green; text-shadow: none;"><i class="fa fa-flag-chechered"></i></div>' )
修改后的完整代码
for i, (route, coordinate) in enumerate(zip(encoded_routes, coordinates)): color = colors[i % len(colors)] # 循环内定义颜色 # 解码路线 decoded_route = polyline.decode(route) # 添加路线到地图 folium.PolyLine(decoded_route, color=color, weight=2.5, opacity=1).add_to(m) # 获取起点和终点位置 start_location = decoded_route[0] end_location = decoded_route[-1] start_description = f"起点: {coordinate['description']}" end_description = f"终点: {coordinate['description']}" # 添加修正后的起点标记 folium.Marker( location=start_location, popup=start_description, icon=folium.Icon( icon='flag-chechered', prefix='fa', color='green', icon_anchor=(10, 40) ), options={'shadow': False} ).add_to(m) # 添加修正后的终点标记 folium.Marker( location=end_location, popup=end_description, icon=folium.Icon( icon='flag-chechered', prefix='fa', color='red', icon_anchor=(10, 40) ), options={'shadow': False} ).add_to(m)
内容的提问来源于stack exchange,提问作者Christoffer Høeg
相关产品推荐
相关产品推荐

