diff --git a/folium/map.py b/folium/map.py index b10b27fae6..e922906713 100644 --- a/folium/map.py +++ b/folium/map.py @@ -403,8 +403,11 @@ def __init__( self.options = remove_empty( draggable=draggable or None, autoPan=draggable or None, **kwargs ) + # this attribute is not used by Marker, but by GeoJson + self.icon = None if icon is not None: self.add_child(icon) + self.icon = icon if popup is not None: self.add_child(popup if isinstance(popup, Popup) else Popup(str(popup))) if tooltip is not None: @@ -421,15 +424,12 @@ def _get_self_bounds(self) -> TypeBoundsReturn: return cast(TypeBoundsReturn, [self.location, self.location]) def render(self): - from .features import CustomIcon, DivIcon - if self.location is None: raise ValueError( f"{self._name} location must be assigned when added directly to map." ) - for child in list(self._children.values()): - if isinstance(child, (Icon, CustomIcon, DivIcon)): - self.add_child(self.SetIcon(marker=self, icon=child)) + if self.icon: + self.add_child(self.SetIcon(marker=self, icon=self.icon)) super().render()