You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 16:45:20