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.

Mostrando popup en mapa de arcGIS

Tengo una lista de ubicaciones y si el usuario hace clic en una, se mostrarán los detalles de la ubicación en un cuadro emergente. En mi comportamiento actual, si hago clic en una ubicación de la lista, se ubicará y aparecerá el cuadro emergente. El problema es que el cuadro emergente no muestra detalles ni texto.

 const onLocationSelect = (location) => {
         let locationGraphics = [];
         let point = new Graphic({
         attributes: {
                 city: location.address.city,
                 name: location.name,
                 state: location.address.state,
                 street1: location.address.street1,
                 street2: location.address.street2,
                 zipCode: location.address.zipCode,
        },
    });
    location.point = point;
    locationGraphics.push(point);
    const result = LocationLayer.applyEdits({
              addFeatures: locationGraphics,
     }).then((results) => {
     if (results) {
           mapDiv.current.goTo(location).then(() => {
           mapDiv.current.popup.open({
                   features: location,
                   location: [
                             location.geoCode.longitude,
                             location.geoCode.latitude,
                   ]
           })
       })
       }
    });
  }

recurso

https://developers.arcgis.com/javascript/latest/sample-code/featurelayer-query-pagination/

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El código proporcionado parece estar manejando el evento onClick en una lista de ubicaciones. Cuando se hace clic en una ubicación, crea un nuevo objeto Graphic con algunos atributos, lo agrega a la LocationLayer y luego llama al método goTo en mapDiv para centrar la vista en la ubicación. Finalmente, abre un popup con los detalles de la ubicación, pero la propiedad features no está bien definida.

    Para solucionar el problema de que el popup no muestra ningún texto de detalle, debemos asegurarnos de que la propiedad features del popup esté configurada con el valor correcto. Así es cómo podemos modificar el código para lograr esto:

    const onLocationSelect = (location) => {
      let locationGraphics = [];
      let point = new Graphic({
        attributes: {
          city: location.address.city,
          name: location.name,
          state: location.address.state,
          street1: location.address.street1,
          street2: location.address.street2,
          zipCode: location.address.zipCode,
        },
      });
      location.point = point;
      locationGraphics.push(point);
      const result = LocationLayer.applyEdits({
        addFeatures: locationGraphics,
      }).then((results) => {
        if (results) {
          // Establecer el feature seleccionado como un array,
          // incluso si es solo un elemento
          const feature = [point];
          mapDiv.current.goTo(location).then(() => {
            mapDiv.current.popup.open({
              features: feature,
              location: [
                location.geoCode.longitude,
                location.geoCode.latitude,
              ],
            });
          });
        }
      });
    };
    

    Lo que hemos hecho es simplemente envolver el feature point en un array y asignarlo a la propiedad features del popup. Esto debería asegurar que el popup muestre los detalles de la ubicación seleccionada.

Comments are closed.