使用 URL 参数

使用 Web AppBuilder 创建的应用程序可直接通过 URL 参数进行修改。 URL 通常以 <your portal url>/apps/webappviewer/index.html? 开头,并且包含下面列出的一个或多个参数。 要包含多个参数,请使用“与”号 (&) 分隔参数。 以下为示例:

http://<your portal url>/apps/webappviewer/index.html?id=6815e148ff1c4aee8dc7159816380a4d&webmap=9cf053ea602345ddae060010c470e615
提示:

现在,为构建 URL 参数提供了一种更为轻松的方法。 在应用程序中添加“共享”微件,然后单击链接选项链接预览会显示您选择的参数,并自动为您生成一个包含 URL 参数的快捷方式链接。 请注意,必须在应用程序中启用“搜索”微件才能使用 find 参数。

注:

3D 应用程序目前不支持 URL 参数。

对查询参数进行编码

必须对所有查询参数进行编码。 编码使用 % 后跟其等效的十六进制数来替换所有无效的字符。

例如,以下是一串未编码的 URL 参数:

http://<your portal url>/apps/webappviewer/index.html?find=380 new york street, redlands, ca

下面是同一个已编码的参数:

http://<your portal url>/apps/webappviewer/index.html?find=380%20new%20york%20street,%20redlands,%20ca

Web 中提供了许多用于生成编码 URL 的免费站点和工具。 例如,Albion Research Ltd. 的 URLEncode and URLDecode Page。 为方便阅读,将不再对本主题中的其余示例进行编码。

打开保存的应用程序

要打开使用 Web AppBuilder 创建的已保存应用程序,请使用 id= 和该应用程序的唯一 ID,如以下示例所示:

http://<your portal url>/apps/webappviewer/index.html?id=6815e148ff1c4aee8dc7159816380a4d

定义 web 地图

要定义 web 地图,请使用 webmap= 和 web 地图的唯一 ID,如以下示例所示:

http://<your portal url>/apps/webappviewer/index.html?webmap=9cf053ea602345ddae060010c470e615

居中地图

要将地图放在特定位置的中央,可通过地理坐标 (x,y) 或投影坐标 (x,y,WKID) 设置 center=

警告:

您可以使用逗号或分号作为分隔符。 如果数字使用冒号作为小数位,则使用分号。

下面是一个地理坐标示例:

http://<your portal url>/apps/webappviewer/index.html?center=34,-50

下面是一个投影坐标示例:

http://<your portal url>/apps/webappviewer/index.html?center=500000,5500000,102100

定义比例级别

要定义地图的比例级别,请使用 center=level= 参数。 level 参数接受地图服务 REST 端点中列出的缓存比例的级别 ID。 以下为示例:

http://<your portal url>/apps/webappviewer/index.html?center=20,45&level=4

定义比例

要定义地图的比例,请使用 center=scale= 参数。 scale 参数接受地图服务 REST 端点中列出的缓存比例。 以下为示例:

http://<your portal url>/apps/webappviewer/index.html?center=20,45&scale=4622324

定义范围

使用 extent= 定义地图范围。 extent 参数接受以 MinX,MinY,MaxX,MaxY 的形式使用地理坐标系 (GCS),以 MinX,MinY,MaxX,MaxY,WKID 的形式使用投影坐标 (PCS),或以 MinX,MinY,MaxX,MaxY,WKT 的形式使用熟知文本字符串 (WKT)。 您可以使用逗号或分号作为分隔符。 如果数字使用冒号作为小数位,则使用分号。

下面是一个地理坐标示例:

http://<your portal url>/apps/webappviewer/index.html?extent=-117.20,34.055,-117.19,34.06

下面是一个投影坐标示例:

http://<your portal url>/apps/webappviewer/index.html?extent=-13079253.954115,3959110.38566837,-12918205.318785,4086639.70193162,102113

下面是一个熟知文本字符串示例:

http://<your portal url>/apps/webappviewer/index.html?extent=1008562.1255,1847133.031,1060087.7901,1877230.7859,wkt=PROJCS["NAD_1983_HARN_StatePlane_Illinois_East_FIPS_1201",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]]

设置图层可见性

要设置地图的图层可见性,可以使用 showLayers= 指定可见图层,或者使用 hideLayers= 关闭图层。 showLayers=hideLayers= 参数接受单个图层 ID 或多个图层 ID。 对于多个图层,请使用分号来分隔 ID 列表 (&showLayers=<layerID>;<layerID>;<layerID>)。

示例如下:http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&showLayers=Census_8491;Census_8492;Census_8493

还可接受图层名称。 但是,使用图层 ID 更可靠,因为可以更改图层名称。 可以从 web 地图项目的内容中检索图层 ID:http://<your portal url>/sharing/rest/content/items/<webmapItemID>/data/?f=pjson

使用 showLayers=hideLayers= 参数设置子图层的可见性时,它只会影响同一级别的图层的可见性。 例如,如果您的地图包含两个图层组(A 和 B),每个图层组分别具有三个子图层(A1、A2、A3 和 B1、B2、B3),并且您使用 showLayers= 参数显示了子图层 B2,则图层组 A 和 B 都仍会在地图中处于打开状态,但子图层 B1 和 B3 将被关闭。

提示:

如果 showLayers=hideLayers= 参数的值为空,则所有图层不可见或所有图层可见。

警告:

如果您列出了很多图层,或者在设置 showLayers=hideLayers= 参数时名称很长,则 URL 可能过长,因此服务器无法对其进行解析 (不同的服务器针对 URL 有其各自的长度限制。)

查找位置或要素以打开地图

要查找用于打开地图的位置或要素,请使用 find=。 地图会自动缩放到最接近的匹配位置,并向地图中添加注释标记。 该 find 参数接受单行地址、部分地址(例如仅城市或仅国家/地区)、地名、经纬度坐标以及可搜索图层中的要素(如宗地标识号 (PIN) 1916352001)。 以下为示例:

http://<your portal url>/apps/webappviewer/index.html?find=380 new york street, redlands, ca
警告:

必须对所有查询参数进行编码,并且必须在应用程序中启用“搜索”微件才能使用此参数。

添加点

要向地图添加点,请使用 marker=<x>,<y>。 以指定的 x 和 y 位置将点添加到地图中。 还可以添加以下可选属性:

  • <wkid> - 添加到地图的 x,y 坐标的空间参考。 如果不包含 WKID,则使用 GCS 坐标。
  • <encoded title> - 点弹出窗口的标题。 如果不包含标题,则该弹出窗口将为空。
  • <encoded icon URL> - 点符号。 如果不包含符号,则使用蓝色标记符号。
  • <encoded label> - 点符号旁的标注。

应考虑下列几点:

  • 需要 <x> 和 <y>。
  • 请确保对标题、图标和标注参数编码。
  • 您必须按此顺序添加属性:marker=<x>、<y>、<wkid>、<encoded title>、<encoded icon URL>、<encoded label>。
  • 您可以使用逗号或分号作为分隔符。 如果数字使用冒号作为小数位,则使用分号。
  • 使用空值。 不要使用空格。 例如,如果希望指定标注且不指定任何其他可选属性,则请将标注添加为第六个参数,同时其他参数为空值 (x;y;;;;label)。
  • 如果希望地图放大(同时该点居中),则添加 level= 参数。

以下为示例:

http://<your portal url>/apps/webappviewer/index.html?marker=-79.234826;38.147884;;Race start and finish;;Grindstone 100 Ultra Marathon&level=7

查询要素

要查询要素并缩放至该要素,您可使用下列选项之一:

  • query=<layer name>,<field name>,<field value>
  • query=<layer name>, <where clause>
  • query=<layer id>,<field name>,<field value>
  • query=<layer id>, <where clause>
提示:

现在介绍一种以交互方式构建 URL 参数的方法。 在应用程序中添加“共享”微件,然后单击链接选项。 选择查询要素并缩放至该要素选项,然后选择要查询的图层、字段和字段值。 复制包含指定 URL 参数的链接预览中的 URL。 如果不再需要“共享”微件,请将其从应用程序中移除。

警告:

所有查询参数均区分大小写且必须被编码。

WHERE 子句遵照 SQL 标准。 例如,当 WHERE 子句包含 IN 操作时,请不要使用逗号将 WHERE 子句中的图层名称或 ID 隔开,而应该使用分号,如下所示。 这是因为逗号在 WHERE 子句中专门用于构建值列表,例如 ('A11', 'A12', 'A13) 或 ('Charlotte', 'Chicago')。 这样就可以正确解析查询参数,以区分图层和 WHERE 子句。

  • query=<layer name>; <where clause>
  • query=<layer id>; <where clause>

由于图层名称可更改,强烈建议您使用图层 ID 进行查询。 可以从 web 地图 ID 中检索图层 ID,如下图所示:http://<your portal url>/sharing/rest/content/items/32a83775654249dcae6b8f2eff5d4072/data/?f=pjson

警告:

检索图层 ID 时,请确保 web 地图已公开共享。

例如,如下所示,图层以 JSON 格式被单独添加到地图中。 图层 ID 是 Census_8491、字段名称为 POP2000,字段值为 1211537。 您可执行以下查询:

id: "Census_8491",
layerType: "ArcGISFeatureLayer",
url: "http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3",
visibility: true,
opacity: 1,
mode: 1,
title: "Census - states",

http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491,POP2000,1211537
http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491,POP2000=1211537

您还可以查询字符串或 ObjectID 字段。

http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491,STATE_NAME,California
http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491,STATE_NAME='California'
http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491,OBJECTID,1

图层通常以地图服务组的形式添加。 要查询组中的子图层,请将 <layer id_sublayer id> 用作图层 ID。 以下列图层为例,图层 ID 为 Census_3217,子图层 ID 索引为 3。 子图层的图层 ID 应该为 Census_3217_3。 您可执行以下查询:

id: "Census_3217",
layerType: "ArcGISMapServiceLayer",
url: "http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer",
visibility: true,
opacity: 1,
title: "Census"

http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_3217_3,POP2000,1211537
http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_3217_3,POP2000=1211537
http://<your portal url>/apps/webappviewer/index.html?id=da80a448ac9246148da0811bddc18c94&query=Census_8491;STATE_NAME in ('California', '')

切换区域设置

要切换应用程序语言,请使用 locale URL 参数和双字母 ISO 639-1 语言代码。 支持下列语言代码:ar、bs、ca、cs、da、de、el、en、es、et、fi、fr、he、hr、hu、id、it、ja、ko、lt、lv、nb、nl、pl、pt-br、pt-pt、ro、ru、sk、sl、sr、sv、th、tr、uk、vi、zh-cn、zh-hk 和 zh-tw。

例如,要以法语使用 Web AppBuilder,请将 locale=fr 附加到 URL 上,如下所示:

http://<your portal url>/apps/webappviewer/index.html?locale=fr

控制打开移动布局的时间

该应用程序支持两种基于屏幕尺寸的布局样式。 一种适用于桌面,另一种适用于移动设备。 当屏幕显示的高度或宽度小于 600 像素时,将自动应用移动布局。 但是,这可能会导致应用程序嵌入到网站中时出现异常行为,例如,当网站中的弹出窗口采用移动布局样式时。 要控制布局样式,请使用 mobileBreakPoint=<pixel number>。 例如,如下所示,只要屏幕尺寸不小于 300 像素,则可一直使用桌面样式:

http://<your portal url>/apps/webappviewer/index.html?mobileBreakPoint=300