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

Flask地图渲染报错UnboundLocalError:变量latitu未赋值即引用

解决UnboundLocalError:local variable 'latitu' referenced before assignment的问题

嘿,我来帮你看看这个问题!你遇到的UnboundLocalError其实是两个小细节问题导致的,咱们一步步拆解解决:

问题1:变量名误用导致未定义错误

在第二个标记组(旅游景点)的infobox里,你写了:

"<br>Latitude: "+lat+ ""

这里的lat是第一个循环(餐厅数据循环)里的变量,在第二个处理旅游景点的循环中根本没有定义,你应该使用当前循环的纬度变量latitu才对。

另外我还注意到,旅游景点标记的经度显示用了latitu(纬度变量),这也是个小错误,应该改成对应的经度变量longitu,避免显示错误的坐标数据。

问题2:Markers参数的语法错误

你在两个列表推导式之间用了逗号,这会让markers的值变成一个包含两个生成器的元组,而不是一个包含所有标记的列表。正确的做法是用+运算符把两个列表推导式生成的列表合并成一个整体。

修正后的完整代码

fullmap = Map(
    identifier="fullmap",
    varname="fullmap",
    style=(
        "height:100%;"
        "width:100%;"
        "top:0;"
        "left:0;"
        "position:absolute;"
        "z-index:200;"
    ),
    lat=46.160329,
    lng=-1.151139,
    markers=[
        # 餐厅标记组
        {
            'icon': icons.dots.red,
            'title': prix,
            'lat': lat,
            'lng': lng,
            'infobox': (
                titre+ " <b style='color:#ffcc00;'> " +prix+ "</b>"
                "<h3>surface:<b style='color:#33BBFF;'>" +surface+"</b></h2>"
                "<br>Longitude: "+lng+ ""
                "<br>Latitude: "+lat+ ""
            )
        } for lat,lng ,titre,surface,prix in zip(Lat,Lng,Titre,Surface,Prix)
        # 用+合并两个标记组列表
        +
        # 旅游景点标记组
        {
            'icon': icons.dots.yellow,
            'lat': latitu,
            'lng': longitu,
            'infobox': (
                title+ " <b style='color:#ffcc00;'> </b>"
                "<br>Longitude: "+longitu+ ""  # 修正为经度变量longitu
                "<br>Latitude: "+latitu+ ""   # 修正为当前循环的纬度变量latitu
            )
        } for latitu,longitu ,title in zip(Latitude,Longitude,Title)
    ],
    circles=[{
        'fill_color': '#FF00FF',
        'fill_opacity': 0.2,
        'center': {
            'lat': 46.160329,
            'lng': -1.151139
        },
        'radius': 1300,
        'infobox': "Centre ville"
    }],
    fit_markers_to_bounds = True
    # maptype = "TERRAIN",
    # zoom="5"
)

这样修改后,两个标记组会被正确合并成一个列表,变量名也不会再出现未定义的情况,应该就能在地图上同时展示餐厅和旅游景点的标记了!

内容的提问来源于stack exchange,提问作者Mohammed Benaou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:44:57