1

我在 Angular 应用程序内的 ArcGIS Esri 地图中集成了一个宗地图层。但是现在我想更改用户单击某个包裹时弹出模板中出现的某些值的格式。

现在我的弹出值看起来像这样。

ASSMT_YEAR - 2,017.00

ATTDATE - 20190130

浴室 - 0.00

要求

ASSMT_YEARYEAR_BUILT值格式不应包含逗号或小数。

ATTDATEREC_DATE值格式应为日期格式。( 01/30/2019 )

我怎样才能达到上述要求?

.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;
        }
    });
  }
4

1 回答 1

2

要格式化弹出窗口的字段,您可以使用formatpopup 的属性fieldInfos

ArcGIS JS API - 字段信息格式

在你的情况下,我认为这个配置应该可以工作,

fieldInfos: [
    {
        fieldName: "ASSMT_YEAR",
        label: "ASSMT Year",
        format: {
            dateFormat: "short-date"
        }
    },
    {
        fieldName: "ATTDATE",
        label: "Attendance Date",
        format: {
            dateFormat: "short-date"
        }
    },
    {
        fieldName: "BATHROOMS",
        label: "Bathrooms"
        format: {
            digitSeparator: true,
            places: 0
        }
    }
]

现在,您正在使用popupUtils.createPopupTemplate函数生成弹出窗口。所以要继续走这条路,你需要做一些改变。

首先,您需要知道要更改哪些字段,在这方面您必须使用某些内容,例如字段类型。

其次,我认为简单的改变是代替popupUtils.createPopupTemplate,使用popupUtils.createFieldInfos并遵循文档示例

于 2022-01-07T11:47:47.537 回答