Search Control#

Example#

from ipyleaflet import Map, SearchControl, Marker, AwesomeIcon

m = Map(zoom=3, center=[19.1646, 72.8493])

marker = Marker(icon=AwesomeIcon(name="check", marker_color='green', icon_color='darkgreen'))

m.add(SearchControl(
  position="topleft",
  url='https://nominatim.openstreetmap.org/search?format=json&q={s}',
  zoom=5,
  marker=marker
))

m

You can add a callback that will be run when on search found:

m = Map(center=[47, 2], zoom=5)

search = SearchControl(
    position="topleft",
    url='https://cartoradon.irsn.fr/commune.py/communes/search/FR/{s}?',
    zoom=5
)
m.add(search)

def on_found(**kwargs):
    # Print the result of the search (text, location etc)
    print(kwargs)

search.on_location_found(on_found)

m

You can also search features from GeoJSON layers.

import json
import os
import requests

from ipyleaflet import AwesomeIcon, GeoJSON, Map, Marker, LayerGroup, SearchControl

m = Map(zoom=3, center=[19.1646, 72.8493])

if not os.path.exists('countries.geo.json'):
      url = 'https://raw.githubusercontent.com/jupyter-widgets/ipyleaflet/master/examples/countries.geo.json'
      r = requests.get(url)
      with open('countries.geo.json', 'w') as f:
        f.write(r.content.decode("utf-8"))

with open("countries.geo.json") as f:
    data = json.load(f)

countries = GeoJSON(data=data)

layer_group = LayerGroup(layers=(countries,))
marker = Marker(icon=AwesomeIcon(name="check", marker_color='green', icon_color='darkred'))

m.add(SearchControl(
  position="topleft",
  layer=layer_group,
  zoom=4,
  property_name='name',
  marker=marker
))

m

Attributes and methods#

class ipyleaflet.leaflet.SearchControl(**kwargs: Any)[source]#

SearchControl class, with Control as parent class.

url#

The url used for the search queries.

Type:

string, default “”

layer#

The LayerGroup used for search queries.

Type:

default None

zoom#

The zoom level after moving to searched location, by default zoom level will not change.

Type:

int, default None

marker#

The marker used by the control.

Type:

default Marker()

found_style#

Style for searched feature when searching in LayerGroup.

Type:

default {‘fillColor’: ‘#3f0’, ‘color’: ‘#0f0’}

on_feature_found(callback, remove=False)[source]#

Add a found feature event listener for searching in GeoJSON layer.

Parameters:
  • callback (callable) – Callback function that will be called on found event when searching in GeoJSON layer.

  • remove (boolean) – Whether to remove this callback or not. Defaults to False.

on_location_found(callback, remove=False)[source]#

Add a found location event listener. The callback will be called when a search result has been found.

Parameters:
  • callback (callable) – Callback function that will be called on location found event.

  • remove (boolean) – Whether to remove this callback or not. Defaults to False.