操作方法

操作方法:在 ArcGIS Online 和 Portal for ArcGIS Map Viewer 中创建弹出窗口,展示字段名称和值按降序排列的多个字段

Last Published: February 9, 2023

摘要

在 ArcGIS Online 和 Portal for ArcGIS Map Viewer 中,通过 Arcade 表达式配置的弹出窗口可以跨多个要素字段显示和排序字段名称及其值。 这使得判断面内事件数量最多或最少的产品或问题变得更加直观。 本文提供了示例和使用 Arcade 表达式的说明,指导用户在 Map Viewer 中创建弹出窗口,展示字段名称和值按降序排列的多个字段。

下图显示了 Map Viewer 弹出窗口中各字段及记录的分隔效果。

Portal for ArcGIS Map Viewer 中图层的弹出窗口

过程

  1. 在 Map Viewer 中打开地图。 单击内容(深色)工具栏上的图层,然后在弹出窗口中选择图层进行编辑。
  2. 设置(浅色)工具栏上,单击弹出窗口 > 选项 > 属性表达式
  3. 单击 + 添加表达式以打开 Arcade 表达式编辑器窗口。
  4. 在编辑器窗口中,为新表达式指定名称。
  5. 表达式对话框中,插入以下 Arcade 表达式。
    1. 定义返回最小值为 IsEmpty() 的 Comparator 比较函数。
function Comp (a, b) {
  When(
    IsEmpty(a[1]), -1,
    IsEmpty(b[1]), 1,
    Iif(a[1]>b[1], 1, -1)
  );
};
  1. 定义用于数组列表的变量。 在此示例中,数组包含字段名称及其对应的字段值。
var <variableName1> = [
  ["<fieldName1>", $feature.<fieldName1>],
  ["<fieldName2>", $feature.<fieldName2>],
  ["<fieldName3>", $feature.<fieldName3>],
  ["<fieldName4>", $feature.<fieldName4>],
  ["<fieldName5>", $feature.<fieldName5>],
  ["<fieldName6>", $feature.<fieldName6>],
  ["<fieldName7>", $feature.<fieldName7>],
  ["<fieldName8>", $feature.<fieldName8>],
  ["<fieldName9>", $feature.<fieldName9>],
];
  1. 使用以下语句指定排序类型。 以下代码块中的示例展示了降序排序。 若需升序排序,请忽略 Reverse() 函数。
<variableName1> = Reverse(Sort(<variableName1>, Comp));
  1. 指定以下语句,返回排序后的文本值。 在此示例中,代码块中添加了额外的文本格式化。 最终结果会移除所有括号,并将逗号替换为冒号。
var <variableName2> = "";
for (var i in <variableName1>) {
  if (<variableName2> == "") {
    <variableName2> = Replace(Replace(Replace(<variableName1>[i], '["', ""), '",', ": "), ']', "");
  } else {
    <variableName2> += TextFormatting.NewLine + Replace(Replace(Replace(<variableName1>[i], '["', ""), '",', ": "), ']', "");
  }
}

return <variableName2>;

下面的代码块是完整工作表达式的示例。

function Comp (a, b) {
  When(
    IsEmpty(a[1]), -1,
    IsEmpty(b[1]), 1,
    Iif(a[1]>b[1], 1, -1)
  );
};

var arr = [
  ["BREASTCANCER", $feature.BREASTCANCER],
  ["CARDIOVASCULAR", $feature.CARDIOVASCULAR],
  ["CERVICALCANCER", $feature.CERVICALCANCER],
  ["COLONCANCER", $feature.COLONCANCER],
  ["DIABETES", $feature.DIABETES],
  ["INFLUENZA", $feature.INFLUENZA],
  ["LUNGCANCER", $feature.LUNGCANCER],
  ["PROSTATECANCER", $feature.PROSTATECANCER],
  ["SKINCANCER", $feature.SKINCANCER],
];

arr = Reverse(Sort(arr, Comp));

var result = "";
for (var i in arr) {
  if (result == "") {
    result = Replace(Replace(Replace(arr[i], '["', ""), '",', ": "), ']', "");
  } else {
    result += TextFormatting.NewLine + Replace(Replace(Replace(arr[i], '["', ""), '",', ": "), ']', "");
  }
}

return result;
  1. 单击运行以查看表达式结果的预览。 如果达到所需的结果,请单击确定
在 Portal for ArcGIS Map Viewer 编辑器窗口中指定 Arcade 表达式
  1. 单击弹出表达式窗格中的 Arcade 表达式上方的上一个按钮。
Portal for ArcGIS Map Viewer 弹出窗口表达式窗格包含新创建的表达式上方的“上一个”图标
  1. 单击字段列表以展开弹出窗口中显示的字段列表,然后单击选择字段
  2. 选中表达式部分下的表达式字段,然后单击完成
  3. (可选)单击表达式字段旁边的重新排序 重新排序图标,并将其拖动到选择字段部分下的新位置。

下图展示了使用 Arcade 表达式后,弹出窗口中新增的 Diseases-Sorted 字段,其中多个字段名称及其值按降序排列。

弹出窗口显示了 Portal for ArcGIS Map Viewer 中新增的 Diseases-Sorted 字段

文章 ID: 000029130

接收通知并查找新问题或常见问题的解决方案

从我们全新的 AI 聊天机器人中获得简明答案和视频解决方案。

下载 Esri 支持应用程序

相关信息

发现关于本主题的更多内容

获取来自 ArcGIS 专家的帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项