es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo poner consultas en la búsqueda de ArcGIS esri?

Tengo mi propia búsqueda en ArcGIS search widget, ¿cómo puedo desactivar la función de búsqueda predeterminada y aplicar la mía?

Mi código actual

const location = () => {
   const map = new Map({
      basemap: 'arcgis-light-gray',

   });

   const view = new MapView({
      center: [123.5504, 12.3574], // Longitud, latitud
      container: mapDiv.current,
      map: map,
      zoom: 2, // Nivel de zoom
      ui: {
         components: ["attribution"] // Elimina los widgets predeterminados excepto la atribución
      }
   });

   var zoom = new Zoom({
      view: view,
      layout: "vertical"
   });
   view.ui.add(zoom, "bottom-right");

   view
      .when((r) => {})
      .then(() => {
         mapDiv.current = view;
         search();
      });
}

const search = () => {
   const searchWidget = new Search();

   mapDiv.current.ui.add(searchWidget, { position: "top-left", index: 2 });

}

Este es el widget de búsqueda de muestra en ArcGIS, quiero anular la función de búsqueda para que lo único que se pueda buscar sean los datos en mi consulta y aparezcan como en la imagen.

Imagen

Recurso

https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para deshabilitar la función de búsqueda predeterminada en el widget de búsqueda de ArcGIS y aplicar su propia consulta, puede proporcionar una fuente personalizada al widget de búsqueda. Esto se puede hacer utilizando la propiedad sources del widget Search.

    En su código, puede crear una fuente personalizada instanciando la clase FeatureLayerSource y pasando un objeto FeatureLayer con su consulta aplicada. Luego, puede pasar la fuente personalizada a la propiedad sources del widget Search.

    Aquí hay un ejemplo de cómo puede modificar su código para agregar una fuente personalizada al widget de búsqueda:

    const location = () => {
      const map = new Map({
        basemap: 'arcgis-light-gray',
      });
    
      const view = new MapView({
        center: [123.5504, 12.3574], // Longitud, latitud
        container: mapDiv.current,
        map: map,
        zoom: 2, // Nivel de zoom
        ui: {
          components: ["attribution"] // elimina los widgets predeterminados, excepto la atribución
        }
      });
    
      const zoom = new Zoom({
        view: view,
        layout: "vertical"
      });
      view.ui.add(zoom, "bottom-right");
    
      view.when(() => {
        mapDiv.current = view;
        // crear una fuente personalizada con su consulta
        const layer = new FeatureLayer({
          url: "https://services.arcgis.com/xxxxxxx/arcgis/rest/services/yourLayerName",
          definitionExpression: "aquí va su consulta"
        });
        const source = new FeatureLayerSource({
          layer: layer
        });
        // pasar la fuente personalizada al widget de búsqueda
        const searchWidget = new Search({
          sources: [source]
        });
        view.ui.add(searchWidget, { position: "top-left", index: 2 });
      });
    };
    

    En el código anterior, reemplace “https://services.arcgis.com/xxxxxxx/arcgis/rest/services/yourLayerName” con la URL de su capa de elementos y “aquí va su consulta” con su consulta específica. Con este código, el widget de búsqueda solo mostrará resultados de su consulta especificada.

Comments are closed.