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 cambiar el formato del valor de un campo en una capa de entidades integrada con el mapa ArcGIS Esri?

He integrado una capa de Parcelas en el mapa ArcGIS Esri dentro de una aplicación Angular. Pero ahora quiero cambiar el formato de algunos valores que aparecen en la plantilla emergente cuando el usuario hace clic en cierta Parcela.

Ahora, mis valores de la plantilla emergente se ven así.

ASSMT_YEAR – 2,017.00

ATTDATE – 20190130

BATHROOMS – 0.00

Requisito

El formato de los valores ASSMT_YEAR y YEAR_BUILT no debe incluir comas ni decimales.

El formato de los valores ATTDATE y REC_DATE debe ser en formato de fecha. (01/30/2019)

¿Cómo puedo lograr el requisito anterior?

Archivo .ts

const createEsriPopupTemplate = function(layer) {
    const config = {
        fields: layer.fields.map(field => (
            {
                name: field.name,
                type: field.type,
            }
        )),
        title: formatName(layer.title),

    };
    return popupUtils.createPopupTemplate(config);
}


for (const layer of esriLayers) {
    view.whenLayerView(layer).then(function (layerView) {
        const popupTemplate = createEsriPopupTemplate(layer)
        if (!popupTemplate) {
            console.log("FeatureLayer has no fields.")
        } else {
            layer.popupTemplate = popupTemplate;
        }
    });
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el requisito anterior, puede modificar la configuración de la plantilla emergente en su archivo .ts de la siguiente manera:

    const createEsriPopupTemplate = function(layer) {
        const config = {
            fields: layer.fields.map(field => {
                let type = field.type;
                if (field.name === 'ASSMT_YEAR' || field.name === 'YEAR_BUILT') { // para campos que no deben tener comas o decimales
                    type = 'integer'; // establecer el tipo de campo como entero
                } else if (field.name === 'ATTDATE' || field.name === 'REC_DATE') { // para campos que deben estar en formato de fecha
                    type = 'date'; // establecer el tipo de campo como fecha
                }
                return {
                    name: field.name,
                    type: type,
                    format: field.name === 'ATTDATE' || field.name === 'REC_DATE' ? { dateFormat: 'short-date' } : {} // establecer el formato de fecha para campos de fecha
                };
            }),
            title: formatName(layer.title),
        };
        return popupUtils.createPopupTemplate(config);
    }
    
    // el resto de su código permanece igual
    

    En el código anterior, verificamos el nombre de cada campo en la plantilla emergente y modificamos su tipo y formato en consecuencia. Para campos que no deben tener comas o decimales, establecemos su tipo como entero. Para campos que deben estar en formato de fecha, establecemos su tipo como fecha y especificamos el formato de fecha mediante { dateFormat: 'short-date' }. Tenga en cuenta que estamos usando el formato short-date, que corresponde al formato MM/dd/yyyy en los Estados Unidos. Puede utilizar un formato diferente especificando una cadena de formato diferente.

Comments are closed.