大家好,我正在使用 Python 在传单地图上绘制 DataFrame df 中包含的飞机位置。使用飞机符号创建图标。所以我将所有标记添加到地图中,使用:
for i in range(0, len(df)):
ac = Marker(name = df['callsign'][i],
location=(df['latitude'][i], df['longitude'][i]),
icon = icon,
rotation_angle = float(df['heading'][i]),
rotation_origin = 'center')
m.add_layer(ac)
对于下一个更新周期,我需要删除这些层(可能多达一百个),但我找不到专门解决需要删除的层的方法,尽管它们是用“名称”字段定义的:
# remove all the ac symbols before we go into the next loop
for i in range(0, len(df)):
m.remove_layer(i)
给出这个错误:
AttributeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_18204/2482639859.py in <module>
71 # remove all the ac symbols before we go into the next loop
72 for i in range(0, len(df)):
---> 73 m.remove_layer(i)
74 #print(ac.name)
75
~\anaconda3\lib\site-packages\ipyleaflet\leaflet.py in remove_layer(self, rm_layer)
2152 The layer to remove.
2153 """
-> 2154 if rm_layer.model_id not in self._layer_ids:
2155 raise LayerException('layer not on map: %r' % rm_layer)
2156 self.layers = tuple([layer for layer in self.layers if layer.model_id != rm_layer.model_id])
AttributeError: 'int' object has no attribute 'model_id'
所以看起来我可以以某种方式引用这些层,但找不到如何。任何线索都非常感谢。