@@ -849,3 +849,44 @@ def __init__(self, data):
849849 var {{this.get_name()}} = L.geoJson({{this.data}}).addTo({{this._parent.get_name()}});
850850 {% endmacro %}
851851 """ )
852+
853+ class MarkerCluster (MacroElement ):
854+ """Adds a MarkerCluster layer on the map."""
855+ def __init__ (self ):
856+ """Creates a MarkerCluster element to append into a map with
857+ Map.add_children.
858+
859+ Parameters
860+ ----------
861+ """
862+ super (MarkerCluster , self ).__init__ ()
863+ self ._name = 'MarkerCluster'
864+ self ._template = Template (u"""
865+ {% macro script(this, kwargs) %}
866+ var {{this.get_name()}} = L.markerClusterGroup();
867+ {{this._parent.get_name()}}.addLayer({{this.get_name()}});
868+ {% endmacro %}
869+ """ )
870+ def render (self , ** kwargs ):
871+ super (MarkerCluster , self ).render ()
872+
873+ figure = self .get_root ()
874+ assert isinstance (figure ,Figure ), ("You cannot render this Element "
875+ "if it's not in a Figure." )
876+ figure .header .add_children (\
877+ JavascriptLink ("https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster"
878+ "/0.4.0/leaflet.markercluster-src.js" ),
879+ name = 'marker_cluster_src' )
880+
881+ figure .header .add_children (\
882+ JavascriptLink ("https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster"
883+ "/0.4.0/leaflet.markercluster.js" ),
884+ name = 'marker_cluster' )
885+
886+ figure .header .add_children (\
887+ CssLink ("https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/0.4.0/MarkerCluster.css" ),
888+ name = 'marker_cluster_css' )
889+
890+ figure .header .add_children (\
891+ CssLink ("https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/0.4.0/MarkerCluster.Default.css" ),
892+ name = "marker_cluster_default_css" )
0 commit comments