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
相关产品推荐
相关产品推荐

