class_docstr: Adds a search tool to your map.
  
  Parameters
  ----------
  layer: GeoJson, TopoJson, FeatureGroup, MarkerCluster class object.
      The map layer to index in the Search view.
  search_label: str, optional
      'properties' key in layer to index Search, if layer is GeoJson/TopoJson.
  search_zoom: int, optional
      Zoom level to set the map to on match.
      By default zooms to Polygon/Line bounds and points
      on their natural extent.
  geom_type: str, default 'Point'
      Feature geometry type. "Point", "Line" or "Polygon"
  position: str, default 'topleft'
      Change the position of the search bar, can be:
      'topleft', 'topright', 'bottomright' or 'bottomleft',
  placeholder: str, default 'Search'
      Placeholder text inside the Search box if nothing is entered.
  collapsed: boolean, default False
      Whether the Search box should be collapsed or not.
  **kwargs.
      Assorted style options to change feature styling on match.
      Use the same way as vector layer arguments.
  
  See https://github.com/stefanocudini/leaflet-search for more information.
class_docstr_tok: ["Adds","a","search","tool","to","your","map",".","Parameters","--","--","--","--","--","layer",":","GeoJson",",","TopoJson",",","FeatureGroup",",","MarkerCluster","class","object",".","The","map","layer","to","index","in","the","Search","view",".","search_label",":","str",",","optional","'properties","'","key","in","layer","to","index","Search",",","if","layer","is","GeoJson\/TopoJson",".","search_zoom",":","int",",","optional","Zoom","level","to","set","the","map","to","on","match",".","By","default","zooms","to","Polygon\/Line","bounds","and","points","on","their","natural","extent",".","geom_type",":","str",",","default","'Point'","Feature","geometry","type",".","``","Point","''",",","``","Line","''","or","``","Polygon","''","position",":","str",",","default","'topleft'","Change","the","position","of","the","search","bar",",","can","be",":","'topleft","'",",","'topright","'",",","'bottomright","'","or","'bottomleft","'",",","placeholder",":","str",",","default","'Search'","Placeholder","text","inside","the","Search","box","if","nothing","is","entered",".","collapsed",":","boolean",",","default","False","Whether","the","Search","box","should","be","collapsed","or","not",".","*","*","kwargs",".","Assorted","style","options","to","change","feature","styling","on","match",".","Use","the","same","way","as","vector","layer","arguments",".","See","https",":","\/\/github.com\/stefanocudini\/leaflet-search","for","more","information","."]
code: def render(self, **kwargs):
      if isinstance(self.layer, GeoJson):
          keys = tuple(
              self.layer.data["features"][0]["properties"].keys()
          )
      elif isinstance(self.layer, TopoJson):
          obj_name = self.layer.object_path.split(".")[-1]
          keys = tuple(
              self.layer.data["objects"][obj_name]["geometries"][0][
                  "properties"
              ].keys()
          )  # noqa
      else:
          keys = None
      self.test_params(keys=keys)
  
      super().render(**kwargs)
  
file_path: folium/folium/plugins/search.py
imports: from branca.element import MacroElement
  from jinja2 import Template
  from folium import Map
  from folium.elements import JSCSSMixin
  from folium.features import FeatureGroup, GeoJson, TopoJson
  from folium.plugins import MarkerCluster
  from folium.utilities import parse_options
label_desc: Use image node_id 3 for calling the Search obj's underlying member method code with example usage: obj.render() without return types