Los dos enlaces que ThomasG77 publicó son geniales, especialmente Fusesearch, pero no pude hacerlo funcionar. Instalé Fuse pero aún 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, reemplace LayerNameJSON
con el nombre de su capa geojson y LayerFieldName
con el nombre del campo que se debe buscar.
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