5 votos

Buscar y hacer zoom en las características json en Leaflet

¿Cómo puedo agregar un cuadro de búsqueda a un mapa que permita a los usuarios buscar/acercarse a un nombre de polígono?

Por lo tanto, si hay 100 polígonos, el usuario podría escribir el nombre del polígono (por ejemplo, Symantec), luego el mapa se acercaría al condado correspondiente.

5voto

BWW Puntos 302

Existen varias soluciones para esto (si no quieres un zoom exacto pero centrado). Puedes usar la lista de página de plugins de Leaflet:

También puedes echar un vistazo al proyecto Bootleaf, una plantilla de Leaflet basada en Bootstrap que utiliza typehead.js (un cuadro de búsqueda autocompletar).

Todos los proyectos mencionados anteriormente tienen demos disponibles para que puedas verificar si es la solución esperada para ti.

5voto

Latif Elaidi Puntos 6

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X