Los dos enlaces que ha puesto ThomasG77 están muy bien, sobre todo el de Fusesearch, pero no he conseguido que funcione. Instalé Fuse, pero aún así no pude hacerlo funcionar. Así que me conformé con Leaflet Search. Los ejemplos dados no son tan informativos, así que aquí hay un buen ejemplo que encontré que funciona muy bien. Espero que esto ayude.
En el ejemplo sustituir LayerNameJSON
con el nombre de su capa geojson y LayerFieldName
con el nombre del campo que debe buscarse.
var searchControl = new L.Control.Search({layer: LayerNameJSON , propertyName: 'LayerFieldName', circleLocation:false});
searchControl.on('search_locationfound', function(e) {
e.layer.setStyle({fillColor: 'white', color: 'white', fillOpacity: 0.5});
//map.fitBounds(e.layer.getBounds());
if(e.layer._popup)
e.layer.openPopup();
}).on('search_collapsed', function(e) {
LayerNameJSON.eachLayer(function(layer) {
LayerNameJSON.resetStyle(layer);
});
});
map.addControl( searchControl ); //inizialize search control